標準出力

新しいもの、変わらないこと 自分の頭を通して考えてみました (stdout)

対話的コマンド

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

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

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

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

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

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




set RHOST="192.168.100.1"
set RUSER="hoge"
set RPASSWD="hoge"
expect <
  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