TeraTermマクロの活用(基本編)

株式会社テイクーワン T.Hです。

ネットワーク機器やLinuxサーバなど、ステータスの確認やログ収集のためにTeraTermを利用しますが、定型的なログ取得作業を行う際や、取得する台数が多い場合などにTeraTermマクロを使って処理の自動化を行うことがあります。

TeraTermマクロ とは

Teratermマクロは、Teratermに付属するスクリプト言語を使って、Tera Termにおける操作を自動化するための機能です。
Tera Term Language (TTL)形式のファイルに処理したい内容を記述することで、その内容に沿って自動的にコマンドを実行することが可能です。

Tera Term Language (TTL)ファイルの準備

TeraTermマクロのベースとなるファイルを準備します。TeraTermマクロを実行する「ttpmacro.exe」を起動し、TTLファイルを読み込むことで実行することが可能ですが、今回はこのファイルをバッチファイルから呼び出す形で使えるような構成で作成します。

接続パラメータ

バッチファイルからTeraTermマクロ実行に必要なパラメータを受け取り、コマンドとして整形します。

TTLファイルのパスがparam1に格納されるため、param2以降の値を変数に格納します。

;接続先ホスト名(ログファイル名に利用)
hostname = param2
;接続先IPアドレス(SSH接続時に利用)
address = param3
;接続アカウント(SSH接続時に利用)
username = param4
;接続パスワード(SSH接続時に利用)
;※平文で記載せず、パスワード格納ファイルに暗号化して格納します。(初回実行時に生成)
passwdfile = 'passwd.dat'
getpassword passwdfile username password

ログ出力準備

ログ出力先、ログファイル名を指定します。

;ログフォルダ
logdir = 'C:\tmp\Example\Log'
;ログファイル名(ホスト名‗西暦8桁‗時分秒)
;例:L2SW0001‗20260301‗190000.log
getdate date "%Y%m%d"
gettime time "%H%M%S"
sprintf2 logfile "%s_%s_%s.log" hostname date time

SSH接続の実行

SSH接続を実行し、ログ取得を開始します。

;%sにはaddress username passwordが左から順番に代入されます。
;SSH接続時のセキュリティ警告でマクロが止まらないよう警告を無視するオプションを任意で指定します。
sprintf2 command '%s /TIMEOUT=5 /ssh /nosecuritywarning /auth=password /user=%s /passwd=%s' address username password
;タスクスケジューラで実行する場合は、画面非表示オプションの「V」を指定して実行するため、下記の形式で実行します。
;sprintf2 command '%s /V /TIMEOUT=5 /ssh /nosecuritywarning /auth=password /user=%s /passwd=%s' address username password

;接続実行
connect command

;;;ログフォルダ移動
changedir logdir

;;;ログ開始
logopen logfile 0 0

コマンドの実行

実行したいコマンドや、次のコマンド実行までの待ち時間を指定します。

:sendln に続いて実行したいコマンドを記述します。
sendln 'ter len 0'
;コマンド実行後に期待する文字列を記述し、異なる場合はエラーで終了します。
wait '#'
if result=0 goto error

sendln 'show running-config'
;コマンド実行後の結果出力に時間が掛かるものは待ち時間を指定します。
mpause 3000
wait '#'
if result=0 goto error

sendln 'exit'

バッチファイルの準備

上記内容で作成したTTLファイルを呼び出すバッチファイルを作成します。

バッチファイルの内容①

ttpmacro.exeのファイルパス、TTLファイルのパス、TTLファイル内で使用する値を引数として記述し、バッチファイルとして保存します。(例:Example.bat)

"C:\tmp\teraterm\ttpmacro.exe" "C:\tmp\Example\ExampleNW.ttl" L2SW001 192.168.0.101 admin
"C:\tmp\teraterm\ttpmacro.exe" "C:\tmp\Example\ExampleNW.ttl" L2SW002 192.168.0.102 admin

バッチファイルの内容②

別の種別のネットワーク機器や、Linuxサーバ用のTTLファイルを用意できたら、必要な内容を追記することで、複数種類の機器のログをまとめて取得することができるようになります。

"C:\tmp\teraterm\ttpmacro.exe" "C:\tmp\Example\ExampleNW.ttl" L2SW001 192.168.0.101 admin
"C:\tmp\teraterm\ttpmacro.exe" "C:\tmp\Example\ExampleNW.ttl" L2SW002 192.168.0.102 admin
"C:\tmp\teraterm\ttpmacro.exe" "C:\tmp\Example\ExampleSV.ttl" SERVER001 192.168.0.201 user001
"C:\tmp\teraterm\ttpmacro.exe" "C:\tmp\Example\ExampleSV.ttl" SERVER002 192.168.0.202 user001
"C:\tmp\teraterm\ttpmacro.exe" "C:\tmp\Example\ExampleFW.ttl" FW001 192.168.0.254 admin

※パスワードファイル内にはユーザ名ごとにパスワードが格納されます。

おわりに

今回はTeraTermマクロを実行するための基本部分と、活用例を紹介しました。
環境に応じてTeraTermマクロ内で実行必要なコマンドも変わってくるので、いろいろ試してもらえればと思います。

前へ

【Microsoft Teams】便利機能の紹介-メッセージを後で処理するための技