以前「Tera Termマクロサンプル-SSH自動ログイン(接続先選択版)」で「inputbox」コマンドを駆使してメッセージを作成し、接続対象ホストを選択し自動接続するマクロをご紹介しました。

自宅サーバ3台ぐらいを使い分けている方とかに便利なマクロでしたよね!

今回Tera TermのNEWバージョン4.78が登場し、新たに追加されたマクロコマンド「listbox」を利用する事で、この処理がかなり簡素化+見やすく操作性も向上しましたので、その「listbox」の使い方についてご紹介したいと思います。

変更になった部分は、接続対象ホストの選択部分のみです。接続コマンド等に変更はありませんのでお間違えの無いようにお願いします。

スポンサーリンク

「inputbox」から「listbox」へ変更して便利になった点

①数字入力ではなく、マウス操作で選択が可能となった
②マクロ内で選択項目の設定部分が簡単になった
③内部処理でリストに無い数字の入力チェック等が不要になった
④何と言っても、ビジュアル(見た目)が良くなった

それでは、実際のマクロをご覧ください。

「listbox」を使った自動ログインマクロ(接続サーバ選択)

;===============================================
; Filename    : ssh_listbox-01.ttl
; Description : SSH Auto login - host selection listbox
; Author      : Jnzou Osako
; Created     : 2013/06/02
; modified    : 
;===============================================
;; [[初期値設定]]
;; ユーザ名/パスワードファイル設定
USERNAME = 'ユーザ名'
PASSFILE = 'C:\password.dat'
;; 配列設定(接続先IPアドレスを代入)
strdim HOSTNM 3
HOSTNM[0] = '192.168.0.1'
HOSTNM[1] = '192.168.0.2'
HOSTNM[2] = '192.168.0.3'
;===============================================
;; 接続先ホスト選択
listbox '接続するIPアドレスを選択して下さい' '接続ホスト選択' HOSTNM
if result >= 0 then
    HOSTADDR = HOSTNM[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」の配列が作成されます。それに値を代入します。

接続先ホスト選択

接続先選択部分では、以下コマンドを実行する事でメニューを表示します。

listbox ‘接続するIPアドレスを選択して下さい’ ‘接続ホスト選択’ HOSTNM

「listbox」を使ったホスト選択画面

接続対象ホストを選択し「OK」ボタンをクリックすると、変数「HOSTADDR」に戻り値に対応した接続先ホストIPアドレスが代入されます。

後はこれまでのSSH自動接続マクロと内容が同じになりますので、ここでは割愛させていただきます。

おわりに

以前の「inputbox」で作成したメニューより「listbox」を用いた方が、簡単・綺麗にメニューを作成することができます。

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