見出し画像

TeraTermマクロでログを保存する方法

Tera Termマクロでのやりとりをログファイルに残す方法について解説します。


決まり事

Tera Termマクロでログファイルを保存するためにはいくつか決まり事があるのですが、その中でも特に重要なのが、 接続先へ接続後にログファイルを開く事ができる という点です。

ログファイルを開いてからサーバーなどへログインすることはできません。そのような場合、次のようなエラーが発生します。

Link macro first. Use 'connect' macro.

この辺りはTera Termの仕様に関わる事なので深く知る必要はありません。ただ、ログイン後にログファイルを開くことができる、とだけ覚えてください。

ログファイルの開き方

ログファイルを開くには次のようにします。

connect '192.168.0.1 /ssh /auth=password /user=foo /passwd=MyPassword'
wait '$'

logopen 'C:\Users\foo\Desktoplogfile.txt' 1 1
sendln 'hostname'
wait '$'
logclose

ログファイルを開くためのTTLコマンドはlogopenです。logopenに引数でファイル名を渡すとログファイルを開くことができます。

相対パスと絶対パス

ログファイル名を相対パスで指定するとTera Termがインストールされているディレクトリからの相対パスでログファイルが指定されます。

実行するTera Termマクロと同じディレクトリを相対パスのベースディレクトリにしたい場合は、changedirでディレクトリを変更します。

たとえば次のようにすると、実行しているマクロファイルが保存されているディレクトリをベースにしてログファイル名を指定できるようになります。

; 実行マクロの保存場所をmacrodirに格納する
getdir macrodir
; ベースディレクトリをmacrodirに変更する
changedir macrodir

logopenの引数

logopenに引数でファイル名を渡すだけでログファイルを開くことができますが、必要に応じて挙動を変えることができます。

たとえばサンプルで掲載したコードは以下のようにlogopenを実行しています。

logopen 'C:\Users\foo\Desktoplogfile.txt' 1 1

ファイル名の後ろに続いている2つの「1 」は何でしょうか。

最初の「1」はバイナリモードで記録するように指定しています。バイナリモードで記録すると受信した内容をそのままファイルに書き出します。

次の「1」は追加モードでファイルを開くように指定しています。ここを「0」にすると、既に同じ名前のファイルが存在したときに上書き保存します。今回は「1」に設定しているので、同じ名前のファイルがあればファイルに追記する形式でログファイルを開きます。

最初はこの引数だけ知っていれば問題ありません。詳細はteratermj.chmに記載されているので、詳しく知りたい方はご覧ください。

ログファイルを閉じる

明示的にログファイルを閉じたい場合はlogcloseを使います。引数はありません。

マクロが終了した際に自動的にログ保存を終了したい場合はlogautoclosemodeを使います。logautoclosemodeはTera Term 4.79から使えるTTLコマンドです。

logautoclosemode <flag>
logopen logile 1 1

; 何か処理する

end

; flagが1に設定されている場合、マクロが終了するとログ保存が終了する

flagが「1」であればマクロ終了と共にログ保存を終了します。flagが0であればマクロが終了した後もログ保存を継続します(デフォルト動作)。

この記事が気に入ったらサポートをしてみませんか?