2012年7月5日木曜日

[expect] 対話的コマンド

UNIX哲学 においては、バッチ処理の妨げになる極力対話的なインターフェースは避けるようかかれていますが、やはり世の中には、対話処理が必要な場面もある。

ということで今回は、expectコマンドを知ったのでメモしておく。
先に参考にさせていただいたサイトを示しておく。

http://202.253.248.12/gijutu/expect/howto-expect.html#b-interact

expectコマンドの基本を押さえるべくヤマハルーターにtelnetでログインして「show enviroment」コマンドを実行してログアウトするというお題を設定。

expectコマンドは、-cオプションを用いる方法、スクリプトファイルにする方法(#!/usr/bin/expect)、シェルスクリプトでヒアドキュメントとする方法等が考えられるが。

今回は、そんなに長くないコードであるため、シェルスクリプト内にヒアドキュメントで埋め込む方法とした。


<pre class="brush:shell">

set RHOST="192.168.100.1"
set RUSER="hoge"
set RPASSWD="hoge"
expect <<EOF
  set timeout -1
  spawn telnet $RHOST
  expect "Username: "
  send "$RUSER\n"
  expect "Password: "
  send "$RPASSWD\n"
  expect ">"
  send "show environment\n"
  expect ">"
  send "quit\n"
  expect ">"
EOF

</pre>

0 件のコメント:

コメントを投稿