ENGINEERS' COLUMN

vol.10

公開日:2026/07/16

Tera Term マクロ機能の活用方法について

  • サーバ
  • 運用

はじめに

本記事では、Tera Termの機能のひとつであるマクロ機能の活用方法を記載します。

Tera Termについて

Tera Termは、Windowsでサーバーやネットワーク機器を操作するための定番の無料ターミナルエミュレータです。SSHやTelnetによるリモート接続のほか、物理的なシリアルポート接続にも対応しており、インフラエンジニアの必須ツールとして長年愛用されています。

Tera Termマクロについて

Tera Termマクロとは、ターミナルエミュレータである Tera Term 上での操作を自動化するためのスクリプト機能です。 独自のマクロ言語である 「TTL (Tera Term Language)」 を使用して記述され、以下の特徴・メリットがあります。

特徴

  1. テキスト形式
    拡張子は .ttl ですが、中身はテキスト形式のため、メモ帳などのエディタで簡単に作成・編集が可能です。
  2. インタープリタ方式
    プログラムを1行ずつ読み込んで実行する BASIC に似た単純な構造で、プログラミング初心者でも学習しやすいのが特徴です。
  3. 専用の実行エンジン
    Tera Termもしくは、Tera Term本体とは別に用意された Tera Term Macro Interpreterがスクリプトを処理します。

メリット

  1. ログイン作業の完全自動化
    IPアドレス、ユーザ名、パスワードの入力を自動化し、ダブルクリックだけでサーバーにログインできる環境を構築できます。
  2. オペレーションミス(ヒューマンエラー)の防止
    定型的なコマンド操作をマクロに記述しておくことで、手入力による打ち間違いやコマンドの実行漏れを確実に防ぐことができます。
    特に、本番環境での設定変更など、ミスが許されない場面で威力を発揮します。
  3. 作業効率の大幅な向上
    複数のサーバーに対して同じコマンドを一斉に実行し、特定のログが出力されるまで待機して次の処理を行うといった、自動制御が可能です。
    ログの保存(ロギング開始)も自動化できるため、作業エビデンスの取り忘れもなくなります。
  4. 手順の標準化と共有
    作成したマクロファイルをチーム内で共有すれば、誰でも同じ品質・同じ手順で作業を再現できます。

Tera Termマクロの作成方法

メモ帳等でマクロ言語を入力し、拡張子「.ttl」で保存するだけでTera Termマクロが作成できます。

Tera Termマクロの実行方法

Tera Termマクロは以下のいずれかで実行できます。

  • Tera Termマクロ(.ttlファイル)をTera Term Macro Interpreterに関連付けし、ダブルクリックする
  • Tera Termを開き、コントロール > マクロ からTera Termマクロ(.ttlファイル)を指定する

Tera Termマクロのサンプル紹介(その1)

以下のマクロを実行すると特定のIPにsshでログインすることができます。

ファイル名:ssh.ttl

; セミコロンはコメントアウトですので、プログラムへの影響はありません

; 以下に接続先IPアドレス、ユーザ名、パスワード情報を入力しておきます
HOSTADDR = '(接続先IPアドレス)'
USERNAME = '(ユーザ名)'
PASSWORD = '(パスワード)'

; sshログインするためのコマンド構文を、strconcatで結合しています
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD

; 接続を実行するコマンドです
connect COMMAND

; マクロ処理を終了します
end

Tera Termマクロのサンプル紹介(その2)

マクロを応用すると、以下の様な動作をさせることも可能です。

  1. ログ保存用のフォルダを作成する
  2. 接続先IPリスト(ip_list.txt)に対し、順番に以下を実行する
    • ssh接続する ※ssh接続できないIPは、エラーを出力しスキップする
    • ログ保存用のフォルダにログファイルを生成する
    • 接続機器のコマンド結果をログファイルに書き込む

ファイル名:ip_list.txt

(接続先IPアドレス1)
(接続先IPアドレス2)
(接続先IPアドレス3)

ファイル名:ssh_log.ttl

; セミコロンはコメントアウトですので、プログラムへの影響はありません

; ログディレクトリ名に使用する日時を取得します
getdate DATE "%Y%m%d_%H%M%S" ; 日付をDATEに格納

; ログフォルダを作成します
getdir DIR                        ; マクロのあるディレクトリを取得
sprintf2 LOGFOLDER 'log_%s' DATE  ; log_(日付)をLOGFOLDERに格納
foldercreate LOGFOLDER            ; LOGFOLDERに格納されている名前でフォルダ作成

; ログイン情報として、接続先のユーザ名、パスワード情報を入力しておきます
USERNAME = '(ユーザ名)'
PASSWORD = '(パスワード)'

; ip_list.txtを読み取り専用で開き、マクロ内で使用できるようにします
fileopen IP_LIST 'ip_list.txt' 0

; 以下のループ処理を実行します
:loop
filereadln IP_LIST HOSTIP ; IP_LISTから1行だけ読み込み、HOSTIPに格納
if result goto fclose     ; IP_LISTから読み込める行が無くなったらfcloseへ飛ぶ
call sub                  ; サブルーチンのsubへ飛ぶ
goto loop                 ; 再度loop処理の最初に戻る

; サブルーチン(各IPに対して実行する処理)
:sub

; 読み込んだHOST IPにsshログインします
COMMAND = HOSTIP
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
connect COMMAND

; ログイン可否による条件分岐ここから--------
; ログイン失敗時
if result <> 2 then
ERROR = HOSTIP
strconcat ERROR 'のログインに失敗したため、スキップします'
messagebox ERROR 'ログインエラー' ;Tera Termのポップアップでエラーを出力

; ログイン成功時
else
; ログファイルの格納場所とファイル名を指定し、logfilenameに格納します
sprintf2 logfilename '%s\%s\[%s].log' DIR LOGFOLDER HOSTIP
; ログ保存を開始します
logopen logfilename 0 1 1 1 0 0

; 接続先の機器でコマンドを実行します
wait '#'  ;#の出力が有るまで待つ
sendln 'terminal length 0' ;コマンドの実行
wait '#'  ;#の出力が有るまで待つ
sendln 'show inventory'    ;コマンドの実行
wait '#'  ;#の出力が有るまで待つ
logclose  ;ログファイルを閉じる
sendln 'exit'              ;コマンドの実行

; ログイン可否による条件分岐ここまで--------
endif 

;操作対象のTeraTermウィンドウから切断します
unlink

;サブルーチンを終了します
return 

; クローズ処理をします
:fclose
fileclose IP_LIST  ;IP_LISTを閉じる
end                ;マクロ処理を終了

ログ取得時の引数について(参考)

ログの書き込みを開始するlogopenコマンドの引数は、Tera Term Version 5.1以降で最大11まで指定可能です。

指定順 パラメータ名 設定値の役割
1 filename 保存するログのファイル名(パスを含む文字列)または それらが格納されている変数名
2 binary 0: ASCII(改行変換あり) / 1: バイナリ(そのまま記録)
3 append 0: 新規上書き / 1: 既存ファイルに追記
4 plain text 0: 制御文字を含む / 1: 制御文字を除去
5 timestamp 0: 無効 / 1: 行頭に時刻を付与
6 hide dialog 0: ログ取得ダイアログを表示 / 1: 非表示
7 include screen buffer 0: 開始後から記録 / 1: 現在の画面バッファも遡って保存
8 timestamp type 0: ローカル時刻 / 1: UTC / 2: ログ開始からの経過時間 / 3: 接続からの経過時間
9 rotate 0: 分割なし / 1: ログローテーション(分割)を有効化
10 rotate size 分割するファイルサイズ(数値。単位は KB)
11 encoding 0: システム既定 / 1: UTF-8 / 2: UTF-8(BOM) / 3: SJIS / 4: EUC-JP

例えば、先程のサンプル”logopen logfilename 0 1 1 1 0 0”で取得する場合は、以下の動作となります。

指定順 パラメータ名 設定値および役割
1 filename Logfilename(変数名)
2 binary 0: ASCII(改行変換あり)
3 append 1: 既存ファイルに追記
4 plain text 1: 制御文字を除去
5 timestamp 1: 行頭に時刻を付与
6 hide dialog 0: ログ取得ダイアログを表示
7 include screen buffer 0: 開始後から記録

まとめ

Tera Termマクロは、特別な環境・ツールを使用せずに簡易的に自動化を実現することが可能です。ぜひ参考にして頂けますと幸いです。

検証環境

Windows 11 Enterprise Version 24H2
Tera Term Version 5.6.0 x64

Tera Term は TeraTerm Project の著作物であり、BSDライセンスのもとで配布されています。

本ページに記載されている社名、製品名などは、一般に各社の表示、商標または登録商標です。

阿部 有宇樹

著者情報

阿部 有宇樹

テクニカルサポート第3部 ネットワークサポート第1課

2018年中途入社。Cisco製品(主にデータセンター向けスイッチ・ルータ製品)を担当。QAサポート、社内エンジニア向けトレーニング講師などの業務に従事。

このコラム記事に関する
お問い合わせはこちら

このコラムを面白いと思ったあなたへ。
技術に真摯に向き合う仲間を募集しています。
私たちと一緒に、次の挑戦をしませんか?

ENGINEERS' COLUMN 記事一覧