エラー処理、処理内容非表示など、expectを外部から使用する際に気にした点のメモです。
当たり前と言えば当たり前なのですが、正しくその処理が終わったかを確認する必要が重要です。いわゆるエラー処理や終了コードの話です。あまりコードを書き慣れていない頃は気にしないですよね。
os.systemで簡単に戻り値を確認できるので、終了コードを意識して記載しておくと親切なプログラムが作れると思います。
直前の終了コード確認コマンド
正常終了
$ echo $?
0
異常終了
$ echo $?
1
expectの終了コードについて
expectとsendで処理を1行1行書くとexit 0で終わってしまいます。 重要な箇所には必ず以下のようにエラー処理を付けておくのが好ましいと思います。
書き方①
expect {
default {exit 1}
">"
}
書き方②
expect {
"XXXX" {exit 2}
"#"
}
sshの過程などの出力を表示しない方法
出力なし
#!/usr/bin/expect
log_user 0
テキストに出力
#!/usr/bin/expect
log_user log.txt
interact文について
「spawnの入出力をキーボードと画面にする」という動作です。勘違いしていましたが、制御をシェルに戻すだけなのでtelnetやsshのセッションは切れていないことに注意です。