2.10.2014

戻りのプロンプト値を見て処理を分けるteratermマクロ

ASAとCiscoルータでは、terminalコマンドが少し違うので、一連のマクロでconfigなどを取得しようとすると、ASAはASA用にマクロを切り替えなければならないので、ちょっと面倒だ。

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

コメントを投稿

Related Posts Plugin for WordPress, Blogger...