Expect を使用して、SSH セッションおよび ERP プログラムと自動対話しています。
私のexpectスクリプトで変数をキャプチャするために正規表現に頼るのではなく、ユーザーから特定のキーストロークを受け取ったときに、画面領域、たとえば1つのフィールドをコード内の変数にキャプチャすることは可能でしょうか? サーバーに他のコマンドを送信し、フィールドを再送信しますか?
注文番号が 6、12、6、18 (6 は行、12-18 は列) に含まれており、6 桁の注文番号が含まれているとします。行 6 列 12 から 18 までの注文番号を変数にコピーしたい。次に、ユーザーがもう少し対話できるように (または別のメニューに移動することを期待して)、別のメニューで注文番号を再送信します。
だから私の質問は次のとおりだと思います:現在の画面の内容は1つのバッファにありますか? (セッション全体ではありません) 画面上のその行と列の範囲にのみ存在する特定のデータ要素だけを抽出できますか?
サンプル擬似コード:
#!/usr/bin/expect -f
set env(TERM) vt100
spawn ssh -Y user@domain
#... set user/pass and other vars...
#... send commands to log into ERP
#don't time out
set timeout -1
interact {
-reset $CTRLZ {exec kill -STOP [pid]}
$CTRLA {
exp_send "menu_address\ry\r"
}
$CTRLO {
#...acquire order number variable...
#...some code I don't understand yet...
exp_send "menu_exit_sequence\r"
exp_send "menu_address\r"
exp_send $ordernumvar
}
~~
}