listboxを使ったteratermの選択型ログインマクロ
目次
- はじめに
- ログインマクロ
- 解説
- 参考サイト
はじめに
teratermログインマクロを作るたびに「あれどうやって作ったんだっけ?」となり調べ直すことが多いので、また同じ状況になった時のため自分用の備忘録的なもの。
listboxを使うことで環境や用途、ログイン方法などでカテゴリを分けることができる。
個別のマクロを数十ファイル用意している現場もあったため、できればこのような1つのマクロで複数の接続先に繋げられるようなものを用意したいところ…。
ログインマクロ
以下マクロ
コピペして動作を確認してみてください。
;ログインマクロ.ttl
strdim LIST 4
LIST[0] = 'IPADDRESS'
LIST[1] = 'ホスト名①'
LIST[2] = 'ホスト名②'
LIST[3] = '手入力'
listbox '選択肢' '項目①' LIST
;IPAddressリストを表示させる。
if result = 0 then
strdim IPLIST 2
IPLIST[0] = '192.168.11.70'
IPLIST[1] = '192.168.11.71'
listbox 'サーバーを選択' 'IPADDRESS' IPLIST
if result = -1 then
end
else
CON = IPLIST[result]
goto login
endif
;ホスト名を表示したい場合①
elseif result = 1 then
strdim HOSTLIST 2
HOSTLIST[0] = 'DNSサーバー#1'
HOSTLIST[1] = 'PROXYサーバー#2'
strdim HOSTIP 2
HOSTIP[0] = '192.168.11.70'
HOSTIP[1] = '192.168.11.71'
listbox 'サーバーを選択' 'ホスト名を表示する場合' HOSTLIST
if result = -1 then
end
else
CON = HOSTIP[result]
goto login
endif
;ホスト名を表示したい場合②
elseif result = 2 then
strdim HOSTLIST 2
HOSTLIST[0] = 'DNSサーバー#1,192.168.11.70'
HOSTLIST[1] = 'PROXYサーバー#2,192.168.11.71'
listbox 'サーバーを選択' 'ホスト名を表示する場合' HOSTLIST
if result = -1 then
end
else
strsplit HOSTLIST[result] ','
CON = groupmatchstr2
goto login
endif
;手打ち入力の場合
elseif result = 3 then
MESSAGE = 'ログインサーバーを入力'
inputbox MESSAGE 'LIST[2]'
CON = inputstr
goto login
else
end
endif
;ここにログイン方法を記述
:login
messagebox CON 'CHECK'
strconcat CON ':22 /ssh /auth=password /user=ログイン名 /passwd=パスワード'
connect CON
wait "#" "$" ">>"
sendln 'uname -n'
end
解説
strdim LIST 4
LIST[0] = 'IPADDRESS'
LIST[1] = 'ホスト名①'
LIST[2] = 'ホスト名②'
LIST[3] = '手入力'
listbox '選択肢' '項目①' LIST
listboxをつかった表示はこのようになる。
私は通常、最初に環境や用途ごとにカテゴリを分けておくが、今回はその後の処理ごとに分けた。
選択した数字がresultに格納され、キャンセルを選択した時はresultに-1が格納される。
IPAddressリストを表示させる書き方
strdim IPLIST 2
IPLIST[0] = '192.168.11.70'
IPLIST[1] = '192.168.11.71'
listbox 'サーバーを選択' 'IPADDRESS' IPLIST
if result = -1 then
end
else
CON = IPLIST[result]
goto login
endif
listboxにそのままIPアドレスを記述させる書き方。
変数CONへ選択されたIPアドレスを格納してログイン処理へ飛ばす。
hostsに記述をしていたりDNSサーバーを用意している場合は、IPアドレスの代わりにhost名を記述してもログイン可能。
ちなみにキャンセルを押した時(resultが-1)の処理を書いておかないとマクロが途中で止まりとてもダサいので注意。
ホスト名を表示したい場合①
strdim HOSTLIST 2
HOSTLIST[0] = 'DNSサーバー#1'
HOSTLIST[1] = 'PROXYサーバー#2'
strdim HOSTIP 2
HOSTIP[0] = '192.168.11.70'
HOSTIP[1] = '192.168.11.71'
listbox 'サーバーを選択' 'ホスト名を表示する場合' HOSTLIST
if result = -1 then
end
else
CON = HOSTIP[result]
goto login
endif
日本語で接続先の情報が欲しい時その1
listboxで表示はHOSTLISTを表示させ、変数にはHOSTIP[result]を格納させる。
ホスト名を表示したい場合②
strdim HOSTLIST 2
HOSTLIST[0] = 'DNSサーバー#1,192.168.11.70'
HOSTLIST[1] = 'PROXYサーバー#2,192.168.11.71'
listbox 'サーバーを選択' 'ホスト名を表示する場合' HOSTLIST
if result = -1 then
end
else
strsplit HOSTLIST[result] ','
CON = groupmatchstr2
goto login
endif
サーバー名(日本語)とIPアドレスを併記し、指定の文字で区切るstrsplitを用いてIPアドレスを変数に格納する方法。
strsplitで区切った文字はgroupmatchstr1~9に格納される。
色々と書きすぎる以下のようにとスクロールバーが表示され見切れてしまう状態になるが、
listbox '----------------------サーバーを選択-----------------------' 'ホスト名を表示する場合' HOSTLIST
手打ち入力の場合
MESSAGE = 'ログインサーバーを入力'
inputbox MESSAGE 'LIST[2]'
CON = inputstr
goto login
IPアドレスやホスト名を手入力で入力しログインさせる方法。
修正の手間がいらない。が打ち間違えるというHEが発生する可能性は多少ある。
マクロ内で文字エンコードを変更したりログ保存の設定をする記述もしている場合、この項目を用意しておくとサーバーが増設された時などに、listbox用の記述を修正せずともとりあえずは手入力でログインできたりするのでちょっと楽。
:login
messagebox CON 'CHECK'
strconcat CON ':22 /ssh /auth=password /user=ログイン名 /passwd=パスワード'
connect CON
wait "#" "$" ">>"
sendln 'uname -n'
end
今回は格納された変数を確認するmessageboxを用意した。
その後はssh接続での一般的な接続方法。
接続が同一でない場合は分岐内にログインを書いたり、他のログイン記述を複数個書いたりします。
参考サイト
Author And Source
この問題について(listboxを使ったteratermの選択型ログインマクロ), 我々は、より多くの情報をここで見つけました https://qiita.com/A0yama_anpl/items/977d704d1c0cf1fee4e6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .