TeraTermマクロ-SSH自動ログイン(正常接続の判定 if result)

Tera Term(テラターム)のマクロ機能を利用し、SSHプロトコル(パスワード認証) でサーバに自動ログイン+アルファのマクロ(接続状態確認バージョン)をご紹介します。

これまで紹介してきたテラタームマクロは、ただ単純にサーバ等に接続するだけで、サーバに接続出来なくても、マクロエラーになる事は一切考えられていないマクロでした。

そこでここでは「connect」コマンドを実行後に、正常に接続が完了、及びプロンプトが正常に表示される事を「if result」の制御コマンドを使用し確認するバージョンのマクロをご紹介していきます。

正常に接続できない場合や、一定時間経過してもプロンプトが表示されない場合
メッセージ(Connection Error)を表示してマクロを終了させます。
接続エラーメッセージを表示

スポンサーリンク

SSH自動ログインマクロ(接続性を判定)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
;=================================================
; 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を終了させています。

これは、後々紹介するマクロで必要になってくる機能です。

⑤マクロ終了

自動ログインが完了するとマクロ機能を終了します。

おわりに

テラタームマクロを利用して、自動でログ収集を行ったりする際等の自動処理を行う上で、これらの処理がほぼ必須となってきます。マクロがひとり歩きしないように、マクロ内にきちんとエラー処理を組み込んで使い易いコードを記述したいですね!

スポンサーリンク

コメントを残す

このページの先頭へ