見出し画像

【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で機器から抜ける

図1:New connection
図2:SSH Authentication
図3:Log

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などでも動くと思います)

おわりに

マクロの細かい説明は省略するので下記の公式ページを見てください。

いいなと思ったら応援しよう!