tech note

インフラ技術や車についてつぶやいていくブログ

ProCurveスイッチの設定を自動で変更できるexpectを作った

f:id:tea_cat:20180911055207j:plain

Expect構文

#!/usr/bin/expect

set timeout 5
set IP [lindex $argv 0]

spawn telnet $IP
expect {
    -glob "Username:" {
        send "manager\n"
        exp_continue
    }
    -glob "Password:" {
        send "PASSWORD\n"
    }
    -glob "Press any key to continue" {
        send "\n"
    }
}
expect {
   "#" {
        send "conf t\n"
        send "実行したいコマンドを入力"\n
        send "wr me\n"
        send "logout\n"
    }
}
expect {
    -regexp "Do you want to log out" {
        send "y\n"
    }
}

IPを引数から取得し、そのIPに対してtelnetログイン、設定変更、保存、ログアウトを行う
expect文です。
usernameが聞かれる場合といきなりパスワードを聞かれる場合、パスなしで入れる場合と
3パターンのログインに対応しています。