本サイトはプロモーションを含みます。

Tera Termマクロでリストボックスを使う方法

リストボックスを使うと、複数の選択肢からひとつをユーザーに選ばせて処理を進める事ができるようになります。

リストボックスの使い方

listboxというTTLコマンドによりリストボックスを使う事が出来ます。

listbox ‘リストボックスに表示する文字列’ ‘タイトル’ リストの文字配列

戻り値はシステム変数resultに格納されます。resultの値はユーザーが選択した文字配列の添字になり、もしもキャンセルされた場合はresultに-1が格納されます。

たとえば3つのホストから1つを選択して接続するならば、次のように書くことができます。

strdim hostarray 3

hostarray[0] = 'host1'
hostarray[1] = 'host2'
hostarray[2] = 'host3'

listbox '接続先を選んでください' '接続先選択' hostarray

if result != -1 then
connect hostarray[result]
endif

もう少しだけ応用してみよう

接続先によってユーザー名やパスワードが変わったり、接続用のパラメータを変えたい場合がありますよね?ぼくはあります。
if文で分岐させてもいいのですが冗長になってしまいます。ぼくだったらincludeを使います。たとえば、こんなのはどうでしょうか。

設定ファイル

接続先のユーザー名、パスワード、認証方法を設定します。ファイル名は「ホスト名.conf」で保存します。たとえば次の項のマクロファイルを例にすると「host1.conf」「host2.conf」「host3.conf」となります。

; host1.conf
user='taro'
passwd='taropass'
auth='/auth=password'
; host2.conf
user='hanako'
passwd='hanakopass'
auth='/auth=challenge'
; host3.conf
user='jiro'
passwd='jiropass'
auth='/auth=password'

マクロファイル

このTeraTermマクロを実行すると、設定ファイルで「認証方法」「ユーザー名」「パスワード」を設定してsshログインを行います。

strdim hostarray 3

hostarray[0] = 'host1'
hostarray[1] = 'host2'
hostarray[2] = 'host3'

listbox '接続先を選んでください' '接続先選択' hostarray

; resultを待避
n = result

if n == -1 then
    messagebox 'キャンセルしました' 'キャンセルしました'
    end
endif

; ホスト名.confというファイル名を設定
sprintf2 hostconf '%s.conf' hostarray[n]

; 設定ファイルを読み込む
include hostconf

; connectで使う文字列を設定
sprintf2 constr '%s /ssh %s /user=%s /passwd=%s' auth hostarray[n] user passwd

connect constr

これは一例ですが、応用次第でいろいろな処理ができそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)