以下のような形で、コマンドを記載していくことで、
入力待ちコマンドに対してコマンド実行できる。
expect -c "
###################
#タイムアウト設定部分
###################
set timeout 60 #タイムアウト時間をセット
###################
#入力待ち部分
###################
spawn コマンド #実行するコマンドを記載
expect {
¥"コマンド実行時の期待応答¥" #マシンからの応答文字
{
send -- ¥"送信文字列¥n¥" #値の送信(Enterまで渡すには¥nを末尾につける)
exp_continue #期待応答が来なかった場合にexpect内分岐のパターンマッチを続けるの意味
}
timeout { #タイムアウト時の処理
exit 1
}
}
###################
#終了部分
###################
<手動実行の場合>
interact #通常の通信に戻るの意味
<cron実行の場合>
expect eof #実行したプロセスが終わるのを待つの意味
exit #終了する
<コマンドの実行結果が欲しい場合>
expect eof
catch wait result #spawnで実行したコマンド結果を待つ
exit [ lindex $result 3 ] #spawnで実行したコマンド結果が[lindex $result 数値]に入る。
#数値はリストから何番目の要素を取り出すかを指定。
#3はステータスコード。左はコマンド実行結果のステータスで終了するの意味
#実行結果を変数に結果を格納する場合は、set 変数名 [ lindex $result 数値]のようにすれば良い。
"
最終更新:2020年11月30日 21:26