複数の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アドレスの配列を作成して、順次接続を試みます。
接続可能なIPアドレスが3つあるとしましょう。
- 172.16.31.203
- 10.0.0.203
- 192.168.2.203
sshログインが成功するまで、順次IPアドレスにリモートログインを施行するには次のようにします。
;配列ipを宣言する strdim ip 3 ;IPアドレスを設定 ip[0] = '172.16.31.203' ip[1] = '10.0.0.203' ip[2] = '192.168.2.203' for i 0 2 sprintf '%s /ssh /auth=password /user=foo /passwd=********' ip[i] connect inputstr testlink if result == 2 then break endif next
testlinkで接続状態を調べて、接続が完了している場合はbreakでループから抜けています。