Tera Term(テラターム)のマクロ機能を利用し、SSHプロトコル(パスワード認証) でサーバに自動ログイン+アルファのマクロ(接続状態確認バージョン)をご紹介します。
これまで紹介してきたテラタームマクロは、ただ単純にサーバ等に接続するだけで、サーバに接続出来なくても、マクロエラーになる事は一切考えられていないマクロでした。
そこでここでは「connect」コマンドを実行後に、正常に接続が完了、及びプロンプトが正常に表示される事を「if result」の制御コマンドを使用し確認するバージョンのマクロをご紹介していきます。
正常に接続できない場合や、一定時間経過してもプロンプトが表示されない場合
メッセージ(Connection Error)を表示してマクロを終了させます。 
SSH自動ログインマクロ(接続性を判定)
;=================================================
; Filename : ssh_connect-04.ttl
; Description : SSH Auto login
; Author : JUNZOU
; Created : 2011/04/02
; modified :
;=================================================
;; 接続先ホスト/ユーザ名/パスワード設定
HOSTADDR = '接続先IPアドレス'
USERNAME = 'ユーザ名'
PASSWORD = 'パスワード'
;=================================================
;; ①コマンド組立て
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
;; ②接続
connect COMMAND
;; ③接続判定1(接続出来ない場合はメッセージを表示しマクロ終了)
if result <> 2 then
messagebox 'It could not be connected.' 'Connection Error'
end
endif
;; ④接続判定2(10秒以内にプロンプトが表示されないとTeraTem終了)
timeout = 10
wait '$' '#'
if result = 0 then
disconnect
end
endif
;; ⑤マクロ終了
end
マクロ内容の解説
①コマンド組立て ②接続
③接続判定1(接続出来ない場合はメッセージを表示しマクロ終了)
接続判定1エリアでは、「connect」のリンクと接続の状態を確認しています。
「connect」すると、システム変数「result」に以下の値が格納されます。
値 … 状態
0 … Tera Term とリンクされていない。
1 … ホストへの接続はされていないが、Tera Term へのリンクはされている。
2 … リンクおよび接続両方ともされている。 ←正常に接続
値「2」がホストに正常に接続された状態なので、「2」以外の場合は 異常と判断してマクロを終了させています。 ⇒ 「connect」コマンドの詳細
④接続判定2(10秒以内にプロンプトが表示されないとTeraTem終了)
接続判定2エリアでは、接続後(ログインは正常に終了)にプロンプトが表示されない(システムが重くて表示出来ない?)場合に、10秒待ってもプロンプトが表示されないとマクロ&TeraTermを終了させています。
これは、後々紹介するマクロで必要になってくる機能です。
⑤マクロ終了
自動ログインが完了するとマクロ機能を終了します。
おわりに
テラタームマクロを利用して、自動でログ収集を行ったりする際等の自動処理を行う上で、これらの処理がほぼ必須となってきます。マクロがひとり歩きしないように、マクロ内にきちんとエラー処理を組み込んで使い易いコードを記述したいですね!








