複数のリモートホストで並列にコマンドを実行して結果をファイルでダウンロードするやつ書いた

コード(rop.rb)

使い方

まずリモートで実行したいスクリプトを用意します。例えばログファイルのgrepとかです。

$ cat script.txt
grep hoge /var/log/nginx/access.log

で、例のやつを実行します。

$ ruby rop.rb -H 'app-0{01..05}' -f script.txt

そうするとで対象ホストに並列(デフォルトでは5スレッド。-nオプションで指定可)でSCPとかSSHでスクリプトが送られて実行されて、その結果がファイルとしてダウンロードされます。ダウンロードしたファイルは

/tmp/rop/0522-2306-11/app-001
/tmp/rop/0522-2306-11/app-002
/tmp/rop/0522-2306-11/app-003
/tmp/rop/0522-2306-11/app-004
/tmp/rop/0522-2306-11/app-005

みたいにホストの名前をファイル名としてそれぞれローカルに保存されます。
変な数字の部分は日付とか時間です。

以上、よろしくお願いします。