[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

expect



井上@今日は有給です。
わが家ではRTA50iをダイアルアップルータとして使っていますが、いつもshow
logコマンドに最後だけ見せてくれる機能があったらいいなあ、と感じていまし
た。
で、前から目を付けていたexpectを使ってこういうものをつくって(?)みまし
た。
これを showlog という実行ファイルにセーブしておいて、
$ showlog | tail
とか、
$ showlog | tail -100 | grep -i incoming
とかやると便利ではないかと思っています。
今日初めてexpectのマニュアルを読んで最低限の理解で書いたので、もっと賢い
方法がたくさんありそうです。
tclベースなので、ものすごくおくが深そうです。

なお、使うときはPASSSTRING という文字列を適当にパスワードに変えてくださ
い(ようするにファイルにパスワードを書かないといけません。)
また、わが家ではRTA50iのホスト名がinogw、設定で
console prompt inogw
としているので、その変も適当な文字列に変えてください。

それから、
console lines infinity
としてlogの出力などが途中で止まらないようにしないとうまく動きません。
console character euc
も便利でしょう。

要するにTCLでの変数の設定/参照方法を知らないという致命的な状態で書いたの
で、もっと美しいのをつくった方は私にください(^^;;)

----showlog
#!/usr/local/bin/expect -f
set timeout -1
spawn telnet inogw
expect {
	"Password: "
}
send "PASSSTRING\n"
expect {
	{inogw> }
}
exp_send_user "logged in\n"
send "show log\n"
expect {
	{inogw> }
}
exp_send_user "\n"
send "exit\n"

----end of showlog

-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...