CISCOスイッチが学習したEtherアドレスとポート名の対応(expect)

  • 同様のことをexpectにやらせた場合.
  • IOS
#!/usr/bin/expect --
set timeout 20
log_user 1
exp_internal 0
spawn /usr/bin/telnet $argv
expect "assword:" { send "パスワード\r" }
expect ">" {send "enable\r" }
expect "assword:" { send "パスワード\r" }
expect "#" {send "show mac-address-table\r" }
expect {
        "More" { send " " ; exp_continue }
        "#" { send "exit\r" }
        }
expect eof
  • CatOS用
#!/usr/bin/expect --
set timeout 20
log_user 1
exp_internal 0
spawn /usr/bin/telnet $argv
expect "assword:" { send "パスワード\r" }
expect ">" {send "show cam dyn\r" }
expect {
        "continue" { send "y\r" ; exp_continue }
        ">" { send "exit\r" }
        }
expect eof
  • expectを使った方が通信量が少なくてよいので反応は軽い
  • 得られたデータは改行コードの削除やOSのバージョンに応じた整形が必要.同じIOSであっても形式はかなり異っている.