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

複数のIPアドレスへ順次接続を試みる方法

複数の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でループから抜けています。