人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

TeraTermのマクロのwait、waitlnについて教えてください。
Windows7 64bitでTeraTerm Pro 4.72を使用しています。
TeraTermのマクロを使って目的の処理をするために使用しようとしております。
サーバのコマンドプロンプトは以下の通りです。
[foo@eval ~]$ ※「foo@eval」と最後尾の$はサーバ、ユーザによって変わります。
プロンプトが表示されたらコマンドを発行、プロンプトを待ち、次のコマンドを発行、プロンプト待ち…と言う繰り返しで、例えば以下のようにマクロを組みました。
timeout=5
waitln ']$' ']#'
sendln 'ls -l'
waitln ']$' ']#'
sendln 'pwd'
しかし実際に実行してみると、waitlnで指定したプロンプトが出力されるも認識されず、タイムアウト(5秒)まで待たされると言う状況になっています。
複数サーバで実行し、一般ユーザであったりrootであったりとあるため、プロンプト最後のどのホスト、ユーザでも変わらないプロンプト末尾を部分一致で引っかけようと言う意図で組んだのですが。
どう組めば良いのか、ご教示を頂けますと大変助かります。

●質問者: Marin_MTB
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● takaz
●400ポイント ベストアンサー

waitlnは、「1行読み込んで」=「改行を受け取って」から、、その内容が引数指定のものである行だったら実行終了する命令です。
一方、プロンプト待ちの場合、「]$」のあとの改行がありません。同じ行内でキー入力待ちになっています。そのため、その段階ではまだその行は終わっておらず、waitlnの処理対象にはならないのです。

そういう目的の場合は、waitlnではなくwaitを使うようにしてください。


Marin_MTBさんのコメント
回答ありがとうございます。なるほどそういうことでしたか。waitに直してみます。

Marin_MTBさんのコメント
waitに書き換えたのですが、結局timeoutまで待たされる事象は変わっていません。どう書けば良いのでしょうか…。

2 ● Kayak
●100ポイント

コマンド・プロンプトのマッチングに失敗しているようなので、単純に

wait '$' '#'
sendln 'ls -l'
wait '$' '#'
sendln 'pwd'

でどうでしょうか?
timeoutは不要です。


Marin_MTBさんのコメント
上手く行ったのですが、$や#だけですと、スクリプト等で使われるコメントアウト文字(#)に反応してしまうようでした。このため、$と#だけは避けるようにしておりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ