Amazon

2013年9月21日土曜日

expectのスクリプトから実行したコマンドの結果を後続の処理で使う方法

expectコマンドは、CUIの万能自動化コマンドです。
シェルを実行して任意のコマンドを実行し結果を次のコマンドで使うといったこともできます。
 例えば、bashを起動して/etc/passwdファイルからrootのホームディレクトリを取り出してechoする場合、次のようなスクリプトで実装できます。
4〜7行目がポイントです。
$ cat test.exp 
spawn bash
expect "$ "
send "grep \^root /etc/passwd\n"
expect -re "root:.*:0:0:.*:(.*):(.*)"
set roothome $expect_out(1,string)
send "echo $roothome\r"
expect "$ "
send "exit\n"
interact
$ expect -f test.exp 
spawn bash
$ grep ^root /etc/passwd
root:*:0:0:System Administrator:/var/root:/bin/sh
echo /var/root
$ echo /var/root
/var/root
$ exit
exit
$ 

0 件のコメント: