【メモ】エラー処理、処理内容非表示などexpectを外部から使用する際に気を付けること。

f:id:komeiy:20140820222339p:plain

エラー処理、処理内容非表示など、expectを外部から使用する際に気にした点のメモです。

当たり前と言えば当たり前なのですが、正しくその処理が終わったかを確認する必要が重要です。いわゆるエラー処理や終了コードの話です。あまりコードを書き慣れていない頃は気にしないですよね。

os.systemで簡単に戻り値を確認できるので、終了コードを意識して記載しておくと親切なプログラムが作れると思います。

os.systemについては前回のエントリを参照 http://komeiy.hatenablog.com/entry/2014/07/30/201751

直前の終了コード確認コマンド

正常終了

$ 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の入出力をキーボードと画面にする」という動作です。勘違いしていましたが、制御をシェルに戻すだけなのでtelnetsshのセッションは切れていないことに注意です。

シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加

Pythonスタートブック

Pythonスタートブック

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)