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」コマンドを使用します。
通常入力時に使用する「inputbox」を使用すると、入力した文字がそのまま表示されますが、「passwordbox」を使用すると入力した文字が「********」で表示されます。 (一種のセキュリティ対策ですね!)
⇒ 「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」のコマンドを実行します。
⑧マクロ終了
自動ログインが完了するとマクロ機能を終了します。マクロを終了してもセッションは維持され、通常のコンソール操作が継続して行えます。
おわりに
今回ご紹介したテラタームマクロは、管理対象サーバの接続するユーザ名は同じだが、パスワードがサーバによって違う場合に有効なマクロになります。まあ何かのお役にでも立てれば幸いです。