TeraTermのマクロを試してみる(複数サーバ)

TeraTermのマクロで複数のサーバでコマンドを実行してみる。


VagrantCentOSのサーバーを4つ用意し、
下記のIPアドレスを割り当てた状態。
「192.168.33.10」
「192.168.33.11」
「192.168.33.12」
「192.168.33.13」

for文を使った場合

「192.168.33.10」に接続した後、このサーバからSSH
「192.168.33.11」「192.168.33.12」「192.168.33.13」
に入ってコマンドを実行してみる。
今回は、ifconfigコマンドでIPアドレスを表示してみる。

;サーバーに接続
connect '192.168.33.10:22 /ssh /auth=password /user=vagrant /passwd=vagrant'

for i 11 13

  ;sshで接続
  wait '[vagrant@vagrant-centos64 ~]$'
  cmd = 'ssh 192.168.33.'
  int2str str i
  strconcat cmd str
  sendln cmd

  ;パスワード入力
  wait 'password:'
  sendln 'vagrant'

  ;IPアドレスを確認
  wait '[vagrant@vagrant-centos64 ~]$'
  sendln 'ifconfig | grep 192.168.33'

  ;終了
  wait '[vagrant@vagrant-centos64 ~]$'
  sendln 'exit'

next

ファイルから接続先を読み込む場合

「host.txt」というファイル名で、接続先を書いたファイルを用意する。

192.168.33.11
192.168.33.12
192.168.33.13

ファイルを読み込んで各サーバに接続してみる。

;サーバーに接続
connect '192.168.33.10:22 /ssh /auth=password /user=vagrant /passwd=vagrant'

;ファイル名
host_file = 'host.txt'

;ファイルを開く
fileopen host_list host_file 0

while 1
  :END

  ;ファイルから1行読む
  filereadln host_list host

  ;最後まで読み込んだらbreak
  if result = 1 break

  ;空行の場合はスキップ
  strlen host
  if result <= 0 goto END

  ;sshで接続
  wait '[vagrant@vagrant-centos64 ~]$'
  cmd = 'ssh '
  strconcat cmd host
  sendln cmd

  ;パスワード入力
  wait 'password:'
  sendln 'vagrant'

  ;IPアドレスを確認
  wait '[vagrant@vagrant-centos64 ~]$'
  sendln 'ifconfig | grep 192.168.33'

  ;終了
  wait '[vagrant@vagrant-centos64 ~]$'
  sendln 'exit'

endwhile
なぜか、下記の書き方だとシンタックスエラーになった。
  if result <= 0 continue
よく分かっていない。