はじめに
ネットワーク機器の状態確認ログを取得するために Tera Term マクロを使用することがよくあります。このとき、Tera Term マクロで出力するログファイルの名前にホスト名やマクロ実行日時を含めるようにしておくと、効率的にログファイルの管理を行うことができます。
ホスト名を取得する方法
ここでいうホスト名とは、Tera Term で接続する際に「ホスト:」として指定する IP アドレスまたはホスト名のことを指しています。
Tera Term マクロでホスト名を取得する関数は gethostname
です。
gethostname 変数名
変数名
で指定した変数にホスト名が格納される
実行例:
;機器に SSH 接続
connect "10.1.10.254 /ssh /auth=password /user=admin /passwd=hogepass"
;ホスト名取得
gethostname hostname
;取得したホスト名をメッセージボックスで表示
messagebox hostname "gethostname"
上のマクロを実行すると下のメッセージボックスが表示されます。

接続先として指定した IP アドレスを取得できていることが分かります。
現在日時を取得する方法
Tera Term マクロで現在日時を取得する関数は gettime
です。
gettime 変数名 [フォーマット]
変数名
で指定した変数にフォーマット
で指定した形式で日時が格納されるフォーマット
を指定しない場合は"HH:MM:SS"
の形式となるフォーマット
での日時指定方法は以下の通り- %Y → yyyy (西暦年)
- %m → mm (月)
- %d → dd (日)
- %H → HH (時)
- %M → MM (分)
- %S → SS (秒)
実行例:
;現在日時取得
gettime timestr "%Y/%m/%d %H:%M:%S"
;取得した日時をメッセージボックスで表示
messagebox timestr "gettime"
上のマクロを実行すると下のメッセージボックスが表示されます。

現在日時を取得できていることが分かります。
ログファイル名となる文字列を構築する
Tera Term マクロでログ取得を開始する際に指定するログファイル名を構築します。
例として、ログファイル名を次の名前とします。
C:\Users\hoge\Documents\作業ログ\<ホスト名>_yyyymmdd_hhmmss.log
上の文字列を構築するためのマクロは以下の通りです。
;機器に SSH 接続(Telnet でも問題無い)
connect "10.1.10.254 /ssh /auth=password /user=admin /passwd=hogepass"
;ホスト名を取得
gethostname hostname
;現在日時を取得しつつ、ファイル名の一部を構築
gettime timestr "_%Y%m%d_%H%M%S.log"
;文字列を連結してファイル名を構築
logfileName = hostname
strconcat logfileName timestr
;文字列を連結してファイルパスを構築
logfilePath = "C:\Users\hoge\Documents\作業ログ\"
strconcat logfilePath logfileName
;構築したログファイル名をメッセージボックスで表示
messagebox logfilePath "logfilePath"
上のマクロを実行すると下のメッセージボックスが表示されます。

目的の文字列を構築できていることが分かります。
ログファイル名となる文字列を構築できたら、あとはそれを logopen
で使用するだけです。
;ログ取得を開始する
logopen logfilePath 0 0
;任意のコマンドを実行する(コマンド実行する命令文をここに追記)
;ログ取得を終了する
logclose
マクロファイルの格納先フォルダパスを取得する
ログファイル出力先フォルダを指定する際に、マクロファイルが保存されているフォルダを基準にしたい場合があります。このような場合は、関数 getdir
を使用します。
getdir 変数名
変数名
で指定した変数にマクロファイルの格納先フォルダパスが保存されます
実行例:
;マクロファイルの格納先フォルダパスを取得する
getdir dirstr
;構築したフォルダパスをメッセージボックスで表示
messagebox dirstr "dirstr"
上のマクロを実行すると下のメッセージボックスが表示されます。

マクロファイルの格納先フォルダパスを取得できていることが分かります。
コマンド実行マクロのテンプレート
今回の記事の内容を活用したコマンド実行マクロのテンプレートを記載します。
;機器に SSH 接続
connect "接続先(IP or ホスト名) /ssh /auth=password /user=ユーザ名 /passwd=パスワード"
;ホスト名を取得
gethostname hostname
;現在日時を取得しつつ、ログファイル名の一部を構築(フォーマットは自由に変更)
gettime timestr "_%Y%m%d_%H%M%S.log"
;文字列を連結してログファイル名を構築
logfileName = hostname
strconcat logfileName timestr
;文字列を連結してログファイルパスを構築(マクロファイルの格納先フォルダに保存する場合)
getdir logfilePath
strconcat logfilePath "\"
strconcat logfilePath logfileName
;ログ取得を開始する
logopen logfilePath 0 0
;任意のコマンドを実行する(コマンド実行する命令文をここに追記)
;ログ取得を終了する
logclose
;機器からログアウトする(ログアウトする命令文をここに追記)
コマンドを実行するマクロの作成方法については以下の記事を参照してください。
→【Tera Term】機器でコマンドを実行するマクロを作成する
注意事項
Tera Term の設定でログを自動保存する設定になっている場合は、マクロで指定したログ設定は無視され、Tera Term のログ保存設定に基づいてログが保存されるため注意してください。
マクロでログを制御したい場合は、Tera Term の設定でログを自動保存しない設定とした上でマクロを実行してください。
参考資料
―――――――――――――