Tera Term(テラターム)のマクロ機能を利用し、SSHプロトコル(パスワード認証) でサーバ等に自動ログイン+アルファ(ちょっとだけセキュリティを考慮)のテラタームマクロをご紹介します。

これまで紹介してきたマクロでは、TTLファイルに直接パスワードを記述していました。(これセキュリティ管理的にはマズイですよね!)

そこでここでは、接続先ホスト情報とユーザ名はTTLファイルに直接記述し、パスワードはプロンプトから入力するタイプのマクロを解説していきます。

パスワード入力には、TTLコマンドの「inputbox」ではなく、「passwordbox」を利用してパスワード入力を行います。

スポンサーリンク

SSH自動ログインマクロ(passwordboxを使用)

;=========================================================== 
; Filename    : ssh_connect-05.ttl 
; Description : SSH Auto login 
; Author      : JUNZOU
; Created     : 2011/04/03 
; modified    : 
;=========================================================== 
;; 接続報ホスト/ユーザ名設定 
HOSTADDR = '接続先IPアドレス' 
USERNAME = 'ユーザ名' 
;=========================================================== 
;; ①接続先ホストのパスワードを入力 
MASSAGE = 'HOST : ' 
strconcat MASSAGE HOSTADDR 
strconcat MASSAGE ' / USER NAME : ' 
strconcat MASSAGE USERNAME 
passwordbox MASSAGE 'Please input a password.' 
PASSWORD = inputstr

;; ②入力確認(パスワードが入力されていない場合マクロ終了) 
strcompare PASSWORD '' 
if result=0 then 
    messagebox 'A password is not input.' 'Input error' 
    end 
endif

;; ③コマンド組立て 
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秒以内にプロンプトが表示されない場合TeraTerm終了) 
timeout = 10 
wait '$' '#' 
if result=0 then 
    end 
endif

;; ⑦ホスト名表示 
sendln 'hostname' 
wait '$' '#'

;; ⑧マクロ終了 
end

マクロ内容の解説

①接続先ホストのパスワードを入力

接続先ホストのパスワードを入力のエリアでは、接続先のIPアドレス、及び接続ユーザ名を表示したメニューからパスワードを入力します。

passwordboxを利用した入力例

パスワード入力には「passwordbox」コマンドを使用します。

通常入力時に使用する「inputbox」を使用すると、入力した文字がそのまま表示されますが、「passwordbox」を使用すると入力した文字が「********」で表示されます。 (一種のセキュリティ対策ですね!)

inputboxを利用した入力例

⇒ 「passwordbox」コマンドの詳細はこちらを参照ください

②入力確認(パスワードが入力されていない場合マクロ終了)

入力確認のエリアでは、パスワードが入力された事を確認しています。何も入力しないで「OK」を押した場合にマクロを終了させています。

③コマンド組立て ④接続

⇒ コマンド組立て・接続のエリアの解説はここを参照

⑤接続判定1(接続出来ない場合はメッセージを表示しマクロ終了)

接続判定1エリアでは、「connect」のリンクと接続の状態を確認しています。

「connect」すると、システム変数「result」に以下の値が格納されます。

値 状態
0 Tera Term とリンクされていない。
1 ホストへの接続はされていないが、Tera Term へのリンクはされている。
2 リンクおよび接続両方ともされている。 ←正常に接続

値「2」がホストに正常に接続された状態なので「2」以外の場合は、異常と判断してマクロを終了させています。⇒ 「connect」コマンドの詳細はこちら

⑥接続判定2(10秒以内にプロンプトが表示されないとTeraTem終了)

接続判定2エリアでは、接続後(ログインは正常に終了)にプロンプトが表示されない場合(システムの重い時等)に10秒待ってもプロンプトが表示されない場合にマクロ&TeraTermを終了させています。

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

⑦ホスト名表示

「sendln」コマンドを使用して、コンソールで「hostname」のコマンドを実行します。

⑧マクロ終了

自動ログインが完了するとマクロ機能を終了します。マクロを終了してもセッションは維持され、通常のコンソール操作が継続して行えます。

スポンサーリンク

おわりに

今回ご紹介したテラタームマクロは、管理対象サーバの接続するユーザ名は同じだが、パスワードがサーバによって違う場合に有効なマクロになります。まあ何かのお役にでも立てれば幸いです。