0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TeraTermマクロの実行からLinux自動ログイン・引数・入力ダイアログ・ログ保存、コマンドの実行まで

0
Last updated at Posted at 2026-05-02

はじめに

TeraTermのマクロを作成する方法について調べた内容のまとめです。
マクロの実行方法やLinuxに自動でログインする簡単なマクロを説明します。

目次

TeraTermマクロとは

TeraTermマクロとはTeraTermの操作を自動化するためのプログラムの事です。

TeraTermの操作を自動化するには次の方法があります。

  • Tera Term Language (TTL)でTeraTermMacro(マクロ)を作成して自動化する方法
  • TeraTerm本体(ttermpro.exe)のコマンドラインを使う方法

マクロとTeraTerm本体のコマンドラインは別物です。

  • マクロとは
    TTL言語で作成した.ttlファイルを実行するものです。ttpmacro.exeで実行されます。
  • TeraTermのコマンドラインとは
    コマンドプロンプト等で直接TeraTermを実行するものです。

マクロの作成方法

マクロは拡張子「.ttl」のファイルを作成してプログラムを記述します。

マクロの実行方法

マクロを実行するには次の方法があります。

  1. TeraTermから実行する
  2. コマンドプロンプトから実行する
  3. 「.ttl」ファイルを直接実行する

1. TeraTermからマクロを実行する

コントロール → マクロ

マクロの実行1.png

マクロファイルを選択して実行します。

マクロの実行2.png

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 ファイルをダブルクリックで実行できるように設定します。

  1. .ttlのファイルを作成

マクロ1.png

  1. 右クリック → プログラムから開く → 別のプログラムを選択

マクロ2.png

  1. 「PCでアプリを選択する」をクリック

マクロ3.png

  1. ttpmacro.exeを指定

マクロ4.png

ディレクトリ

C:\Program Files\teraterm-5.5.1-x64

マクロ5.png

  1. ttlファイルの表示が変わります。

マクロ6.png

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
      パスワードを指定します。

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変数に格納されます。

インプットボックス

インプットボックス1.png

リストボックスの使用

リストボックスを表示し、ログインパラメータを入力させます。

プログラム

; 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変数に格納されます。
    値はインデックス番号になります。

リストボックス

リストボックス1.png

ログの保存

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以外の場合(追記)
          既存のログの末尾に追加。
      • <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 ~]$
          

日時付のファイル名と指定したディレクトリパスにログを保存する。

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>....
    

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?