• 締切済み

【Teraterm macro】文字列の出力をトリガーにマクロを終了させる

ど素人な質問ですみません。 teratermにて、ある文字列の出力をきっかけにマクロを終了させるような スクリプトを考えています。 フローとして、 (1):マクロ開始 (2):logファイル生成 (3):ルータの"show xx"にて出力表示 (4):logファイルオープン (5):filestrseekにて"0 input errors"を検索 (6)-1:もし文字列があればマクロ終了 (6)-2:もし文字列がなければ(3)から繰り返し 上記のフローでやりたいと思っています。 考えたマクロが↓です。 logopen 'c:\test.log' 0 0 :not_found sendln 'show interface loop 0' pause 1 fileopen fhandle 'test.log' 0 filestrseek fhandle '0 input errors' if result=0 goto not_found if else result=1 goto found filereadln fhandle str :found sendln 'finish script' fileclose fhandle いろいろ試したのですが、どうやらそもそも'0 input errors'探せてないようです。ログの中には確かに文字列は含まれているのですが。。 本来であればもっと調べるべきですが時間がなく申し訳ありません。 もしわかる方がいらっしゃいましたらご教授ください。 よろしくお願いいたします。

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

単に、ファイルへの書き込みがフラッシュされる前にファイルをオープンしてるからでは。 直接通信バッファでwaitすればよいかと。 http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=teraterm+macro+wait&revid=439654343&ei=f7yLS6naMIro7APomf2zDQ&sa=X&oi=revisions_inline&resnum=0&ct=broad-revision&cd=1&ved=0CDAQ1QIoAA

masuo_jp
質問者

補足

ご回答ありがとうございます。 はい、waitでも試してみたのですが、 ------ :found pause 30 sendln 'show interface loop 0' wait '0 input errors' 'Router' if result=0 then goto found if result=1 then goto not_found :not_found sendln 'finish script' ---- ・バッファにて'0 input errors'を見つけたらスクリプト終了 ・見つからなかったら30秒ごとに繰り返し  ※'Router'の文字列は必ずバッファに含まれる のつもりで書いています。いろいろ試していますがwaitの分岐処理が 思うようにできません。。 すみません。。