TeraTermマクロ



TeraTermマクロについて

TTL(TeraTerm)マクロとは

TTL(Tera Term Language)マクロとは、Windowsにおけるsshやtelnet接続用のコンソールアプリケーション「TeraTerm」で、コマンド操作を自動化するためのスクリプト言語です。

ttpmacro.exeにスクリプトファイル(.ttlファイル)を読み込ませることで、TeraTermの接続処理を自動化することができます。

> ttpmacro.exe スクリプト名

基本文法


接続方法について

TTLマクロでSSH接続するにはconnectステートメントを利用します。

また、TeraTermでのSSH接続方法を指定するには以下のパラメータを記述します。

パスワード認証 /auth=password
公開鍵認証 /auth=publickey
チャレンジレスポンス認証 /auth=challenge

コマンドは下記の通りになります。

connect 'server /ssh /auth=password /user=username /passwd=password'
connect 'server /ssh /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
connect 'server /ssh /auth=challenge /user=username /passwd=password'

TTL接続のサンプルスクリプト

TTLファイルを呼び出すバッチファイル

バッチファイルからttpmacro.exeを起動して、スクリプトを実行します。

「echo HANDLE | ttpmacro.exe」とすることで、TTLマクロの実行終了を待ち合わせることができます。

@echo off

REM 現在位置
set CWD=%~dp0

REM Teratermマクロのためのパス
set TTL_EXE="C:\Program Files\teraterm\ttpmacro.exe"
set TTL_FILE="%CWD%ssh_autologin.ttl"

REM 接続するユーザ名とパスワード
set HOSTNAME=192.168.24.5
set USERNAME=user
set PASSWORD=pass
set SSHKEY=%CWD%id_rsa
set CONFFILE=%CWD%ssh_autologin.INI

REM TTLスクリプトを実行する。
echo HANDLE | %TTL_EXE% %TTL_FILE% "%HOSTNAME%" "%USERNAME%" "%PASSWORD%" "%SSHKEY%" "%CONFFILE%"

exit /b 0

TTLファイル

SSH公開鍵による接続を行います。

TeraTermにおける設定ファイル(.INI)を読み込むには「/f=Iniファイル」を指定します。

; 引数の確認
strcompare param6 ""
if result = 0 then
  messagebox 'error' 'invalid arguments.'
  end
endif

; スクリプトのパラメータを格納する
HostName = param2
UserName = param3
Password = param4
KeyFile  = param5
IniFile  = param6

; ログインコマンド文字列を生成する
sprintf2 LoginCmd '%s:22 /ssh /auth=publickey' HostName
strconcat LoginCmd ' /user='
strconcat LoginCmd UserName
strconcat LoginCmd ' /passwd='
strconcat LoginCmd Password
strconcat LoginCmd ' /keyfile='
strconcat LoginCmd KeyFile
strconcat LoginCmd ' /f='
strconcat LoginCmd IniFile

; 接続処理
connect LoginCmd
if result = 0 then
  end
elseif result = 1 then
  unlink
  end
endif

; 接続先プロンプトを待ち合わせることでログイン判定を行う。
timeout = 30
wait WaitMsg
if result=0 then
  ; ログイン失敗(Link状態に合わせて終了する)
  testlink
  if result = 0 then
    end
  elseif result = 1 then
    unlink
    end
  else
    disconnect 0
    closett
    end
  endif
endif
timeout = 0

; サーバでコマンドを実行する
sendln "hostname"
wait WaitMsg

; 切断する
disconnect 0
closett

ログファイルへの出力

バッチ処理でTTLマクロを利用する場合、SSHログイン後の動作を捕捉する方法を考える必要があります。

解決方法に一つとして、コマンド実行結果をログファイルに出力するという方法があります。

; ログファイルを開く
logopen LOG_FILE 0 0

; ログインコマンドをログに出力する
sprintf2 LoginCmd '%s:22 /ssh /auth=password' HostName
strconcat LoginCmd ' /user='
strconcat LoginCmd UserName
strconcat LoginCmd ' /passwd=****'
logwrite LoginCmd

; 以降のサーバにおけるコマンド実行結果はログに出力されます。

; ログファイルを閉じる
logclose

関連ページ



スポンサード リンク