本サイトはプロモーションを含みます。

TeraTermマクロ実行時にログを取得する方法

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

決まり事

Tera Termマクロでログファイルを保存するためにはいくつか決まり事があるのですが、その中でも特に重要なのが…

接続先へ接続後、ログファイルを開く事ができる

という事です。

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

Link macro first. Use ‘connect’ macro.

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

ログファイルの開き方

まずはコードを見てください。

connect '192.168.2.203 /ssh /auth=password /user=foo /passwd=********'
wait 'foo@astarte'

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

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

相対パスと絶対パス

相対パスでログファイルを開く場合、Tera Termがインストールされているフォルダからの相対パスになります。

実行するTera Termマクロが保存されているフォルダからの相対パスにしたい場合は、changedirを使用します。logopenを実行する前に次のようにすると良いでしょう。

getdir macrodir
changedir macrodir

getdirでTera Termマクロファイルが保存されているパスを絶対パスを取得して、changedirでディレクトリを変更します。setdirでなくてchangedirとする必要があります。詳しくは下記の記事を参照してください。

Tera Termマクロのchangedirとsetdirの違い

logopenの引数

logopenに引数でファイル名を渡すだけでもいいのですが、必要に応じて挙動を変える事ができます。たとえば、サンプルで掲載したコードは以下のようになっています。

logopen ‘ファイル名’ 1 1

ファイル名の後ろに続いている「1 」は何でしょうか。まず最初の1はバイナリモードでの記録を意味します。バイナリモードで記録すると受信した内容をそのままファイルに書き出します。次の1は追加モードでファイルを開く事を意味します。ここを0にすると、既に同じ名前のファイルが存在したときに中身を削除してしまいます。今回は1にしているので、同じ名前のファイルがあればファイルに追記する形式でログファイルを開く事ができます。

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

ログファイルを閉じる

明示的にログファイルを閉じたい場合はlogcloseを使います。引数はありません。ネットワーク接続を閉じた場合など、Tera TermとTeraTermマクロのリンクが切れると、logcloseを使わなくても勝手にログファイルが閉じられます。

マクロが終了した際に自動的にログファイルを閉じたい場合はlogautoclosemodeを使います。logautoclosemodeはTera Term 4.79から使えるTTLコマンドです。次のように使います。

logautoclosemode <flag>
logopen  logile 1 1

flagが1であればマクロ終了と共にログファイルを閉じます。flagが0であればマクロが終了した後もログ取得を継続します(デフォルト動作)。