環境作成にexpectを使う(予定)

現在の自宅ラボには以下の機器があります。

学習のために環境変えたりするけど、決まった初期設定ってのを毎回入れるのが結構手間なので何らかの方法を考えてたけど、expectを使用することに決めた。
基本は

  • screenでのシリアルコンソール接続、ログイン(パスワードだけ固定にしとかないと)
  • コンフィグ初期化(delete flash:/vlan および erase startup-config)
  • 再起動(reload)
  • 起動完了後のExpress Setupに対して no 応答
  • コンフィグモード遷移
  • 投入したい初期設定定義ファイルを読み込みながら、1行ずつ送信
  • 投入完了後、copy run startしてreloadさせる
  • 上記を各対象機器に対して実行

ということをすればいいわけで。
ベースとなるexpectのスクリプトを以下の内容で検証してとりあえず動いたので実際に合うように作って検証しよう

set fp [open command.txt r]

spawn ssh arashi77@localhost
expect "password:"
send "ぱすわーど\n"
expect "$ "
while {[gets $fp line] != -1} {
send "$line\n"
expect "$ "
}
send "exit\n"
expect eof
close $fp

きっとINEとかのラックレンタルでもこういうことやってるんだろうね