LoginSignup
12
13

More than 5 years have passed since last update.

expectを外部から使用する際に気を付けること

Posted at

エラー処理、処理内容非表示など、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のセッションは切れていないことに注意です。

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13