TeraTermのマクロはとても便利だ。ログイン時の処理から、ログイン後のシェル実行までいろいろ使える。今回は、adminでログインして、rootにsu-してパスワード入力するマクロだ。

以下のようなフォルダを作り、そこをTeraTermのマクロを格納することにする。

C:\TTmacro

まずはそこにSSHログイン用の処理を記述したマクロを「ssh_login.ttl」という名前で作り、それを環境ごとのマクロからincludeする。

strcompare conn_method ‘ssh’
ssh_method = !result
strcompare conn_method ‘ssh1’
ssh1_method = !result
strcompare conn_method ‘ssh2’
ssh2_method = !result

if ssh_method then
conn_str = ‘/ssh’
elseif ssh1_method then
conn_str = ‘/ssh /1’
elseif ssh2_method then
conn_str = ‘/ssh /2’
endif

strlen key_file
exist_key_file = result

if exist_key_file then
sprintf ‘%s:%s %s /LA=%s /KT=%s /KR=%s /auth=publickey /user=%s /passwd=%s /keyfile=”%s%s”‘ hostname conn_port conn_str language kanji_transmit kanji_receive username password work_dir key_file
else
sprintf ‘%s:%s %s /LA=%s /KT=%s /KR=%s /auth=password /user=%s /passwd=%s’ hostname conn_port conn_str language kanji_transmit kanji_receive username password
endif

conn_param = inputstr
connect conn_param

次に、各ログイン先ごとのマクロを書く。例として192.168.1.5のサーバに公開鍵方式でadminでログイン後、rootにsu-するマクロ「root@192.168.1.5.ttl」を示す。秘密キー「id_rsa」をマクロ格納フォルダにおく。

; 設定
work_dir = ‘C:\TTmacro\’
hostname = ‘192.168.1.5’
username = ‘admin’
password = ‘adminpassword’
root_password = ‘rootpassword’
key_file = ‘id_rsa’

; 言語 E:英語 J:日本語 K:韓国語 R:ロシア語 U:UTF-8
language = ‘J’
; 漢字コード受信 SJIS EUC JIS UTF8 UTF8m KS5601
kanji_transmit = ‘UTF8’
; 漢字コード送信 SJIS EUC JIS UTF8 KS5601
kanji_receive = ‘UTF8’
; SSHバージョン。 ssh or ssh1 or ssh2
conn_method = ‘ssh’
conn_port = ’22’

; SSHログインを実行する
ssh_login_ttl = ‘ssh_login.ttl’
ssh_login_ttl_path = work_dir
strconcat ssh_login_ttl_path ssh_login_ttl
include ssh_login_ttl_path

; ここからはログイン後の処理
wait username
sendln ‘su -‘
wait ‘Password:’
sendln root_password

秘密キーのファイル指定「key_file」を空にすると通常のパスワード認証になる。

.ttlファイルがTTPMACRO.EXEに関連付けられていなければ、

マクロファイルを右クリック => 「プロパティ」 => プログラムの「変更」ボタン => TTPMACRO.EXEを選択

とする。これで、マクロファイルをダブルクリックするだけで、TeraTermの自動ログインができるようになった。

LogMeTTや、TeraTerm Menuなどで、こうしたマクロを利用するとさらに便利である。