JMeter での負荷試験時に slave の個数分だけ CSVファイルを分割して、それぞれの slave サーバに scp で転送したかったのです。
そんな背景で取り急ぎ作成したよくわからない何かです。
スクリプトみたいな何か
#!/bin/bash ############################################ # 第一引数に配布先マシンのIPアドレス(9つまで) # 第二引数に分割して配布するリストファイル ############################################ # ファイルの転送先ディレクトリ DIR=/var/tmp/dlist.txt # 接続ユーザ USER=vagrant # 接続に使用する秘密鍵 SECRET_KEY=/home/vagrant/.ssh/id_rsa # 引数の数をチェック if [ $# != 2 ]; then echo "引数の数が不正です" exit 1 fi # 配布先マシンの数量を取得 TARGET_COLUMN=`cat $1 | wc -l` # リストファイルの行数を取得 LIST_COLUMN=`cat $2 | wc -l` # 1ターゲット辺りのリスト数を取得 ONE_TARGET_NUM=$[LIST_COLUMN / TARGET_COLUMN] # 配布先マシンのIPアドレスが9つ以上あるかチェック if [ $TARGET_COLUMN -gt 9 ]; then echo "配布先IPアドレスは9つまでしか設定できません" exit 1 fi # 配布先マシンの数量分だけファイルを分割する split -l $ONE_TARGET_NUM -a 1 --numeric-suffixes=1 $2 list. # 分割したファイルを転送する while read VAL; do NUM=$((NUM+1)) scp -i $SECRET_KEY ./list.$NUM $USER@$VAL:$DIR if [ $? -ne 0 ]; then echo "scp コマンドが正常に終了しませんでした" exit 1 fi # 分割したファイルを削除 rm -f ./list.$NUM done < $1
スクリプトの第一引数に下記のような形で転送先サーバの IP アドレスを記載したファイルを渡せば OK です。
※ 第二引数に分割したいリストファイルを指定してください。
192.168.33.11 192.168.33.12 192.168.33.13 192.168.33.14 192.168.33.15 192.168.33.16