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であったりとあるため、プロンプト最後のどのホスト、ユーザでも変わらないプロンプト末尾を部分一致で引っかけようと言う意図で組んだのですが。
どう組めば良いのか、ご教示を頂けますと大変助かります。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/08/27 12:02:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:takaz No.1

回答回数9ベストアンサー獲得回数3

ポイント400pt

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

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

id:Marin_MTB

回答ありがとうございます。なるほどそういうことでしたか。waitに直してみます。

2012/08/24 01:47:24
id:Marin_MTB

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

2012/08/25 20:07:10

その他の回答1件)

id:takaz No.1

回答回数9ベストアンサー獲得回数3ここでベストアンサー

ポイント400pt

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

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

id:Marin_MTB

回答ありがとうございます。なるほどそういうことでしたか。waitに直してみます。

2012/08/24 01:47:24
id:Marin_MTB

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

2012/08/25 20:07:10
id:Kayak No.2

回答回数27ベストアンサー獲得回数5

ポイント100pt

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

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

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

id:Marin_MTB

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

2012/08/27 11:59:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません