TeraTermのマクロを試してみる(複数サーバ)
TeraTermのマクロで複数のサーバでコマンドを実行してみる。
VagrantでCentOSのサーバーを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 よく分かっていない。