【TTL】はじめてのTTLマクロ 1 TereTermのTTLマクロを書いてみた
はじめに
Cisco機器向けにttlマクロを改めて実装しつつ、考え方や実装方法を書いていきます。
対象読者
・TTLマクロを使ったこともあるしコードも少し見たことあるけど実は良く分かっていない方
・TTLマクロを見たことも聞いたこともないが、自分で手を動かしながら調べながら頑張れる方
マクロの考え方
マクロで実装と言っても何していいか分からない方もいるかもしれません。基本の考え方は簡単で「自分が手作業でやることを、マクロに記載していく」となります。
例えば、TeraTermでSSHを用いてCisco機にログインしてログを取る場合、手動で実施すると下記の例のようなことをすると思います。
ttermpro.exeを起動
接続先IPアドレスやプロトコル(SSH)等を指定(図1)
ユーザやパスワードを入力(図2)
enableで特権モードに昇格
ログ取得開始(図3)
ter len 0などログ取得前の処理
showコマンドを実行
exitで機器から抜ける
logget.ttl
先の手動ログ取得をマクロで実装します。
人の手でコマンドを入力するとき「">"や"#"のプロンプトを見てから入力している」という部分があるので、こちらも意識してマクロに組み込む必要があります。
コードは下記の通りで、基本的にはコメントを見ればわかる形になっています。
お作法として、waitで指定した文字列がプロンプトに返ってくるまで待つ→返ってきたらflushrecvを実行→sendlnで文字列を送信となります。
;SSH接続
connect '192.168.11.111:22 /ssh /2 /nosecuritywarning /auth=password /user=ruser /passwd=rpass'
;特権モードに昇格する
wait ">"
flushrecv
sendln "enable"
wait "Password:"
flushrecv
sendln "epass"
;ログファイルのオープン
logopen 'C:\work\logget\teraterm.log' 1 1
;ログ取得前の処理
wait '#'
flushrecv
sendln 'terminal length 0'
wait '#'
flushrecv
sendln 'terminal width 0'
wait '#'
flushrecv
sendln 'terminal no monitor'
;ログ取得
wait "#"
flushrecv
sendln "show ver"
wait "#"
flushrecv
sendln "show ip int brie"
;機器からログオフ
wait "#"
flushrecv
sendln "exit"
;マクロ終了
end
このttlマクロを「C:¥work¥logget」配下で実行するとログが生成されました。
ttlマクロの実行方法
いくつか方法がありますが、今回はttlファイルをダブルクリックで実行します。ttlファイルとアプリケーションが紐づけされていない場合は、下記を紐づけます。
「C:\Program Files (x86)\teraterm5\ttermpro.exe」
注意事項
このコードはとりあえず動く最小限のコードを意識して作成して、例外処理などが足りていません。これらは続きの記事で記載していきます。
また、waitする部分はメーカーやOSによって異なります。そのため、機器にあわせたチューニングが必要です。(今回はCisco機の1812Jと891FJで動作確認済み。おそらく他のIOS、IOS XEなどでも動くと思います)
おわりに
マクロの細かい説明は省略するので下記の公式ページを見てください。