はじめに
TeraTermのマクロを作成する方法について調べた内容のまとめです。
マクロの実行方法やLinuxに自動でログインする簡単なマクロを説明します。
目次
TeraTermマクロとは
TeraTermマクロとはTeraTermの操作を自動化するためのプログラムの事です。
TeraTermの操作を自動化するには次の方法があります。
- Tera Term Language (TTL)でTeraTermMacro(マクロ)を作成して自動化する方法
- TeraTerm本体(ttermpro.exe)のコマンドラインを使う方法
マクロとTeraTerm本体のコマンドラインは別物です。
- マクロとは
TTL言語で作成した.ttlファイルを実行するものです。ttpmacro.exeで実行されます。 - TeraTermのコマンドラインとは
コマンドプロンプト等で直接TeraTermを実行するものです。
マクロの作成方法
マクロは拡張子「.ttl」のファイルを作成してプログラムを記述します。
マクロの実行方法
マクロを実行するには次の方法があります。
- TeraTermから実行する
- コマンドプロンプトから実行する
- 「.ttl」ファイルを直接実行する
1. TeraTermからマクロを実行する
コントロール → マクロ
マクロファイルを選択して実行します。
2. コマンドプロンプトからマクロを実行する
「ttpmacro.exe」を指定して実行します。
書式
ttpmacro.exe マクロファイル名.ttl [引数...]
コマンドプロンプトでマクロを実行する。
パスに半角スペースが入る場合は「""」で囲います。
"C:\Program Files\teraterm-5.5.1-x64\ttpmacro.exe" "C:\Program Files\teraterm-5.5.1-x64\sample\login.ttl"
ttpmacro.exeがあるディレクトリで実行する場合
C:\Program Files\teraterm-5.5.1-x64>ttpmacro.exe sample\login.ttl
powershellでマクロを実行する。
powershellでttpmacro.exeを実行するには先頭に「&」をつけます。
&"C:\Program Files\teraterm-5.5.1-x64\ttpmacro.exe" "C:\Program Files\teraterm-5.5.1-x64\sample\login.ttl"
3. ファイルを直接実行する
.ttl ファイルをダブルクリックで実行できるように設定します。
- .ttlのファイルを作成
- 右クリック → プログラムから開く → 別のプログラムを選択
- 「PCでアプリを選択する」をクリック
- ttpmacro.exeを指定
ディレクトリ
C:\Program Files\teraterm-5.5.1-x64
- ttlファイルの表示が変わります。
Linuxに自動でログインするマクロの作成
Linux環境
| 項目 | 設定値 |
|---|---|
| IPアドレス | 192.168.56.102 |
| TCPポート | 22 |
| SSHバージョン | SSH2 |
| ユーザー | user1 |
| パスワード | password1 |
vscodeの準備
VS Code に Tera Term Language Support 2 をインストールします。
Linuxログインマクロ
プログラム
;ログイン
connect '192.168.56.102:22 /ssh2 /auth=password /user=user1 /passwd=password1'
説明
-
コメントは「;」
-
connectコマンド
ログインするには「connect」コマンドを使用します。書式
connect <command line parameters>コマンドラインパラメータにオプションを指定します。
主なパラメータ:- 192.168.56.102:22
サーバーとポート番号を指定します。
(ポート番号を省略した場合は22が使われます。) - /ssh2
プロトコルを指定します。 - /auth
指定した認証方式で自動ログインをします。
passwordはパスワード認証方式です。 - /user
ユーザ名を指定します。 - /passwd
パスワードを指定します。
- 192.168.56.102:22
URL 形式での記述
URL 形式でも記述できます。
プログラム
connect 'ssh2://user1:password1@192.168.56.102 /auth=password'
書式
<scheme>://[<username>[:<password>]@]<host>[:<TCP port>][/]
ログインパラメータを変数に格納する
ログインパラメータを変数に格納し、sprintf2コマンドを使用して接続文字列を作成します。
プログラム
;接続設定
hostname = '192.168.56.102'
port = '22'
username = 'user1'
password = 'password1'
;接続文字列
sprintf2 str '%s:%s /ssh2 /auth=password /user=%s /passwd=%s' hostname port username password
;接続
connect str
説明
-
sprintf2コマンド
フォーマットされた出力を返します。書式
sprintf2 strvar FORMAT [ARGUMENT ...]
引数の使用
テラタームマクロのコマンドラインは引数を使用する事が出来ます。
引数にサーバのIPアドレスなどのログインパラメータを指定し、プログラムで使用します。
プログラム
;接続設定
hostname = param2
port = '22'
username = param3
password = param4
;接続文字列
sprintf2 str '%s:%s /ssh2 /auth=password /user=%s /passwd=%s' hostname port username password
;接続
connect str
実行方法
# bash
"C:\Program Files\teraterm-5.5.1-x64\ttpmacro.exe" login.ttl 192.168.56.102 user1 password1
# powershell
&"C:\Program Files\teraterm-5.5.1-x64\ttpmacro.exe" login.ttl 192.168.56.102 user1 password1
インプットボックスの使用
文字列を入力させるためのダイアログを表示し、ログインパラメータを入力させます。
プログラム
;接続設定
inputbox 'hostname:' 'Login' ;入力画面の表示
hostname = inputstr
inputbox 'username:' 'Login' ;入力画面の表示
username = inputstr
passwordbox 'password' 'Login' ;パスワード用入力画面の表示
password = inputstr
port = '22'
;接続文字列
sprintf2 str '%s:%s /ssh2 /auth=password /user=%s /passwd=%s' hostname port username password
;接続
connect str
説明
-
inputboxコマンド
インプットボックスを表示するには「inputbox」コマンドを使用します。書式
inputbox <message> <title> [<default> [<special>]]入力された文字はinputstr変数に格納されます。
インプットボックス
リストボックスの使用
リストボックスを表示し、ログインパラメータを入力させます。
プログラム
; listbox
strdim host 3 ;文字列配列型の変数宣言
host[0] = '192.168.56.101'
host[1] = '192.168.56.102'
host[2] = '192.168.56.103'
listbox 'ホストを選択してください' 'Login' host
;接続設定
hostname = host[result]
username = 'user1'
password = 'password1'
port = '22'
;接続文字列
sprintf2 str '%s:%s /ssh2 /auth=password /user=%s /passwd=%s' hostname port username password
;接続
connect str
説明
-
listboxコマンド
リストボックスを表示するには「listbox」コマンドを使用します。書式
listbox <message> <title> <string array> [<selected>] [<keyword parameter>...]入力値はresult変数に格納されます。
値はインデックス番号になります。
リストボックス
ログの保存
Linuxのログイン後にログを自動的に保存する
プログラム
;ログイン
connect '192.168.56.102:22 /ssh2 /auth=password /user=user1 /passwd=password1'
;ログ
logopen "teraterm.log" 0 1 1 1
説明
-
logopenコマンド
ログを保存するには「logopen」コマンドを使用します。書式
logopen <filename> <binary flag> <append flag> [<plain text flag> [<timestamp flag> [<hide dialog flag> [<include screen buffer flag> [<timestamp type>]]]]]主なパラメータ:
- <filename>
ログファイル名 - <binary flag>
-
0の場合
受信した漢字、改行文字は変換されてファイルに書き込まれ、エスケープシーケンスは書き込まれない。ログ例(binary=0)
[user1@localhost ~]$ [user1@localhost ~]$ -
0以外の場合
受信した文字をすべてそのままファイルに書き込む。ログ例(binary=1)
]0;user1@localhost:~[?2004h[user1@localhost ~]$ [?2004l ]0;user1@localhost:~[?2004h[user1@localhost ~]$ -
<append flag>
- 0の場合(上書き)
既存のログファイルがあれば 消して新規作成。 - 0以外の場合(追記)
既存のログの末尾に追加。
- 0の場合(上書き)
-
<plain text flag>
-
0の場合
Backspace(0x08)などの制御文字がログに残る。ログ例(plain text=0)
ls -llと入力し、最後のlをバックスペースで消す。[user1@localhost ~]$ ls -ll -
0以外の場合
Backspace(0x08)などの制御文字がログに残らない。ログ例(plain text=1)
ls -llと入力し、最後のlをバックスペースで消す。[user1@localhost ~]$ ls -ll
-
-
<timestamp flag>
-
0の場合(時刻なし)
-
0以外の場合(時刻あり)
ログ例(timestamp=1)[2026-05-02 14:36:43.577] [user1@localhost ~]$ [2026-05-02 14:36:43.705] [user1@localhost ~]$
-
-
- <filename>
日時付のファイル名と指定したディレクトリパスにログを保存する。
getdateを使用して日時付のファイル名を生成し、sprintf2コマンドでディレクトリパスと結合する。
プログラム
;ログイン
connect '192.168.56.102:22 /ssh2 /auth=password /user=user1 /passwd=password1'
;ログ
;ファイル名
log_path = 'D:\soft\'
getdate log_file_name "teraterm_%Y%m%d_%H%M%S.log" ;日時付のファイル名を生成
sprintf2 log_file '%s%s' log_path log_file_name ;文字列の結合
;ログの開始
logopen log_file 0 1 1 1
※保存先のフォルダはあらかじめ作成しておいてください
説明
-
getdateコマンド
現在の日付を取得します。形式
getdate <strvar> [<format> [<timezone>]]
Linuxログイン後にコマンドを実行する
waitコマンドで入力を待ち、sendlnコマンドでコマンドを実行する。
プログラム
; ログイン
connect 'ssh2://user1:password1@192.168.56.102 /auth=password'
;入力待ち
wait '$' '#'
;コマンドの実行
sendln 'ls -l'
説明
-
waitコマンド
指定した文字列が含まれた文字列をTeraTermが受信するまで待つ。形式
wait <string1> [<string2> ...] -
sendlnコマンド
コマンドを実行する。形式
sendln <data1> <data2>....
参考
- テラタームマニュアル
https://teratermproject.github.io/manual/5/ja/ - マクロの実行方法
https://teratermproject.github.io/manual/5/ja/macro/howtorun.html - connectコマンド
https://teratermproject.github.io/manual/5/ja/macro/command/connect.html - connectコマンドのパラメータ
https://teratermproject.github.io/manual/5/ja/commandline/ttssh.html - sprintf2コマンド
https://teratermproject.github.io/manual/5/ja/macro/command/sprintf2.html - テラタームマクロのコマンドライン
https://teratermproject.github.io/manual/5/ja/macro/commandline.html - inputboxコマンド
https://teratermproject.github.io/manual/5/ja/macro/command/inputbox.html - listboxコマンド
https://teratermproject.github.io/manual/5/ja/macro/command/listbox.html - logopenコマンド
https://teratermproject.github.io/manual/5/ja/macro/command/logopen.html - getdateコマンド
https://teratermproject.github.io/manual/5/ja/macro/command/getdate.html - waitコマンド
https://teratermproject.github.io/manual/5/ja/macro/command/wait.html - sendlnコマンド
https://teratermproject.github.io/manual/5/ja/macro/command/sendln.html









