見出し画像

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

; resultの値が「-1」であればキャンセルボタンが押されている
; resultの値が「-1」でなければ選択したホストに接続する
if result != -1 then
    connect hostarray[result]
endif

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

接続先によってユーザー名やパスワードが変わったり、接続用のパラメータを変えたい場合があるかも知れません。

if文で分岐させてもいいのですが冗長になってしまいます。そのような場合はincludeを使う方法も悪くないかも知れません。

includeを使うと外部ファイルを取り込むことができます。

設定ファイル

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

; resultの値が-1であればキャンセルされたのでマクロを終了する
if n == -1 then
    messagebox 'キャンセルしました' 'キャンセルしました'
    end
endif

; 選択したホスト名から設定ファイル名を生成する
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

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

この記事が気に入ったらサポートをしてみませんか?