複数のIPアドレスへ順次接続を試みる方法
複数の接続先に対して順次接続していきたい場合、マクロ内で配列を用意して順次接続していくと楽です。
配列を活用する
ip1,ip2,ip3 ... のように変数を複数用意しても良いのですが、効率的なマクロを作成するためには、配列を活用した方がマクロがスッキリして分かりやすくなります。
文字配列は、TeraTerm 4.72から使えるようになりました。TTLコマンドはstrdimです。配列を宣言するためには次のようにします。
strdim <array name> <array size>
array sizeは1〜65536の範囲で指定できます。
配列とは
配列というのは出席簿のようだと思ってください。出席簿は出席番号と名前でひと組です。配列も同じで、添字(出席番号)と内容(名前)でひと組になります。注意点は、添字は1でなく0から始まる、という事です。
配列の使い方
strdimは最初に配列の宣言をします。宣言というのは、配列を3個作成します、と書いてメモリ上に配列を3個作るというものです。 名簿の配列を作ってみます。
strdim meibo 3
これでmeiboという名前の配列が作成されました。配列へアクセスするためには次のようにします。
strdim meibo 3
;meiboに値を設定する
meibo[0] = '青木'
meibo[1] = '加藤'
meibo[2] = '佐藤'
;meiboから名前を取得する
name = meibo[1] ;nameには加藤という名前が入る
すべてのIPアドレスにリモートログインを試行する方法
名簿を作成した要領でIPアドレスの配列を作成して順次接続を試みます。次のように5つの接続先があるとします。
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
配列を用意して順次ssh接続していきましょう。
;配列ipを宣言する
strdim ip 3
;IPアドレスを設定
ip[0] = '192.168.0.1'
ip[1] = '192.168.0.2'
ip[2] = '192.168.0.3'
ip[3] = '192.168.0.4'
ip[4] = '192.168.0.5'
for i 0 4
; SSHログインする
sprintf '%s /ssh /auth=password /user=foo /passwd=MyPassword' ip[i]
connect inputstr
; 接続状態を確かめる
; resultが2であれば接続成功
testlink
if result != 2 then
continue
else
; 接続後の処理、ここで何かする
sendln 'whoami'
wait '$'
; リモート機器からログアウト
sendln 'exit'
; unlinkでマクロを切断する
unlink
endif
next
connectで連続して接続する場合、ログアウト後にunlinkでマクロを切断すると確実に次の接続先へconnectできます。
この記事が気に入ったらサポートをしてみませんか?