前回「Tera Termマクロコマンド「listbox」結構便利です!」で、接続対象ホストのIPアドレスを選択し自動接続するマクロをご紹介しました。(こんな感じのメニューでしたよね!)
マクロコマンド「listbox」を使ったメニュー

しかしIPアドレスを利用して選択画面を表示するのでは、実際どこのサーバに接続するのか分からなくなってしまう場合があります。

そこで「listbox」の戻り値の特性を生かす活用法をご紹介します。

接続するサーバの選択画面ではホスト名等の分かりやすい文字列を利用し、そのホストを選択すると対となるIPアドレスへ接続を実行するというものです。仕組みは超単純なのですが以外と使えますので、是非試して実感してみて下さい。
「listbox」のメニューをホスト名で表示

スポンサーリンク

マクロコマンド「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」の値を利用して、対象サーバへ接続するといった感じですね。
「listbox」のメニューからホスト名で選択 「listbox」のメニューから接続はIPアドレス

「HOSTNM」 「HOSTIP」← 配列名

配列0 ホストA = ホストAのIPアドレス
配列1 ホストB = ホストBのIPアドレス
配列2 ホストC = ホストCのIPアドレス

まあ、2次元配列が使えればもっと簡単に書けるのですが、今回苦肉の策という事でこの方法を選択してみました。

おわりに

IPアドレスを表示して接続先を選択するタイプだとどのサーバだったかな?とかあると思われますので、分かりやすいホスト名なんかをキーに選択できれば超便利になりますよね。

結構簡単に使えますので、是非使ってみてください。