expectコマンドで対話式処理をスクリプトで実現

こちらのサイトで、expectコマンドというものが紹介されておりました。

clmemo@aka: Expect コマンドで passwd 変更
http://at-aka.blogspot.com/2009/02/expect-passwd.html

そこで、suの処理をスクリプトで実現する方法を試してみました。

[testuser@localhost ~]$ cat ./auto-su.sh
#!/usr/bin/expect

set timeout 5
spawn su - testuser2
expect "パスワード:"
send "password\n"
interact

set timeoutは、応答がなかったときにタイムアウト処理にする秒数。
spawnは実行されるコマンド。
expectでコマンドが実行された際に出力されるメッセージを定義し、それに応答する内容をsendで定義する。
interactは、対話処理を終了し、通常のプロンプトに戻ることを定義する。

なお、CentOS 5.5で動作を確認したのだが、マニュアルは存在するものの、実行ファイルが存在しなかったため、yumでインストールした。


▼参考
expectコマンドの使い方 - Linux自宅サーバ構築(新森からの雑記)
http://www.uetyi.mydns.jp/wordpress/command/entry-158.html