だが、recvln関数を使うことで意外と簡単に解決できることがわかったので、メモしておこうと思う。
プロジェクト適度な期間で転がっているエンジニアにとっては、shellをがっつり作り込むのは面倒だけど、楽はしたいっていうのが常に命題なので、teratermのマクロは結構便利だったりする。
下のマクロとwhile文を適度に組み合わせれば、いい具合にしのげるマクロになると思う。
connect SSH ;適当なSSH connect pause 3 ;login wait '>' mpause 500 sendln ;戻り値を取得するための空enter recvln ;recvln関数でinputstrに戻り値を格納 ;be enable mode sendln 'en' mpause 500 wait 'assword' mpause 500 sendln 'cisco' ;passは仮でcisco mpause 500 ;ここでは仮にASAのhostnameが"ASA"から始まることとする sendln ;strmatch関数でinputstrに格納した値にASA.*(正規表現)が含まれているかどうか確認 strmatch inputstr 'ASA.*' if result=0 then ;含まれない場合0が返り、含まれる場合1が返る wait '#' ;以下は0の場合なので、IOSルータ向け処理 pause 1 sendln 'ter len 0' ;IOSルータにつきter len 0 pause 1 wait '#' pause 1 sendln 'show run' pause 5 wait '#' sendln 'exit' pause 5 else ;elseなのでASA向けの処理 wait '#' pause 1 sendln 'ter pa 0' ;ASAなのでter pa 0 pause 1 wait '#' pause 2 sendln 'show run' pause 10 wait '#' sendln 'exit' pause 5 endif pause 1 messagebox 'マクロ終了' '' end
else ifで色々と分岐条件を書いていけば、ベンダーフリーで対応できるマクロになるので、まあそれなりに潰しの効くツールになるのではないだろうか。
0 件のコメント:
コメントを投稿