見出し画像

複数の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できます。

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