だが、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 件のコメント:
コメントを投稿