前回「Tera Termマクロコマンド「listbox」結構便利です!」で、接続対象ホストのIPアドレスを選択し自動接続するマクロをご紹介しました。(こんな感じのメニューでしたよね!)
しかしIPアドレスを利用して選択画面を表示するのでは、実際どこのサーバに接続するのか分からなくなってしまう場合があります。
そこで「listbox」の戻り値の特性を生かす活用法をご紹介します。
接続するサーバの選択画面ではホスト名等の分かりやすい文字列を利用し、そのホストを選択すると対となるIPアドレスへ接続を実行するというものです。仕組みは超単純なのですが以外と使えますので、是非試して実感してみて下さい。
マクロコマンド「listbox」の便利な点はこんな感じです
①数字入力ではなく、マウス操作で選択が可能
②マクロ内で選択項目の設定部分が簡単
③内部処理でリストに無い数字の入力チェック等が不要
④何と言っても、見た感じが見易い!
それでは、実際のマクロをご覧ください。
;======================================================== ; Filename : ssh_listbox-02.ttl ; Description : SSH Auto login - host selection listbox ; Author : Jnzou Osako ; Created : 2013/06/16 ; modified : ;======================================================== ;; [[初期値設定]] ;; ユーザ名/パスワードファイル設定 USERNAME = 'ユーザ名' ;; パスワードファイル指定 PASSFILE = 'C:\password.dat' ;; 配列設定(接続先IPアドレスを代入) strdim HOSTNM 3 HOSTNM[0] = 'Sakura-VPS' HOSTNM[1] = 'ServersMan-VPS' HOSTNM[2] = 'GMO-VPS' strdim HOSTIP 3 HOSTIP[0] = '192.168.0.1' HOSTIP[1] = '192.168.0.2' HOSTIP[2] = '192.168.0.3' ;======================================================== ;; 接続先ホスト選択 listbox '接続するホストを選択して下さい' '接続ホスト選択' HOSTNM if result >= 0 then HOSTADDR = HOSTIP[result] else end endif ;; パスワード取得(初回は入力要) getpassword PASSFILE USERNAME PASSWORD ;; 接続用コマンド組立て COMMAND = HOSTADDR strconcat COMMAND ':22 /ssh /2 /auth=password /user=' strconcat COMMAND USERNAME strconcat COMMAND ' /passwd=' strconcat COMMAND PASSWORD ;; 接続コマンド実行 connect COMMAND ;; マクロ終了 end
参考)「listbox」コマンドの書式
listbox [message] [title] [string array]
パラメータ
文字列 [message] リストボックスに表示されるメッセージ
文字列 [title] リストボックスのタイトル
文字型文字列 [string array] リストボックスの選択項目
返り値
システム変数 [result]
項目が選択された場合、0 (N-1)のいずれかの値が格納される
キャンセルされた場合、-1が格納される
マクロ内容の解説
配列設定①(接続先IPアドレスを代入)
まず「strdim」コマンドを用いて文字列配列の変数の宣言を行ないます。
「strdim HOSTNM 3」を宣言し、3個の「HOSTNM」の配列が作成されます。それに接続先ホスト名を代入します。
配列設定②(接続先IPアドレスを代入)
続いて「strdim HOSTIP 3」を宣言し、上記配列設定①で指定したホスト名と対となるIPアドレスを「HOSTIP」へ代入します。
もうお分かりですよね!
接続先の選択時は「HOSTNM」の配列を使用し、接続先選択画面を表示します。接続先ホストを選択すると、その返り値を利用して対となる「HOSTIP」の値を利用して、対象サーバへ接続するといった感じですね。
「HOSTNM」 「HOSTIP」← 配列名
配列0 ホストA = ホストAのIPアドレス
配列1 ホストB = ホストBのIPアドレス
配列2 ホストC = ホストCのIPアドレス
まあ、2次元配列が使えればもっと簡単に書けるのですが、今回苦肉の策という事でこの方法を選択してみました。
おわりに
IPアドレスを表示して接続先を選択するタイプだとどのサーバだったかな?とかあると思われますので、分かりやすいホスト名なんかをキーに選択できれば超便利になりますよね。
結構簡単に使えますので、是非使ってみてください。