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を終了させています。
これは、後々紹介するマクロで必要になってくる機能です。
⑤マクロ終了
自動ログインが完了するとマクロ機能を終了します。
おわりに
テラタームマクロを利用して、自動でログ収集を行ったりする際等の自動処理を行う上で、これらの処理がほぼ必須となってきます。マクロがひとり歩きしないように、マクロ内にきちんとエラー処理を組み込んで使い易いコードを記述したいですね!