我有一个名为sr_run_batch.sh
的bash脚本,可以对图像进行超分辨率处理。现在我想同时在不同的服务器上进行并行测试。即。 1在一个给定时间点的虚拟机。然后在一个时间点,3个然后4个虚拟机。
我尝试将命令写入其中
for host in $(cat hosts.txt); do ssh "$host" "$command" >"output.$host"; done
ssh-keygen && for host in $(cat hosts.txt); do ssh-copy-id $host; done
文件hosts.txt
包含服务器列表:username@ip
(格式)但是当我运行它时,它会给我替换错误
因此,我尝试了pssh(parallel-ssh)
pssh -h hosts-file -l username -P $command
命令为./sr_run_batch.sh
但它没有运行,所以我将其修改为
pssh -h hosts-file -l ben -P -I<./sr_run_batch.sh
但是,由于某些未知原因,它只是在代码中打印echo语句。 这是代码:
NList=(5)
VList=(1)
FList=("input/flower1.jpg" "input/flower2.jpg" "input/flower3.jpg" "input/flower4.jpg")
IList=("320X240" "640X480" "1280X960" "1920X1200")
SList=(2 3)
for VM in ${VList[@]}; do
for ((index=0; index < ${#FList};)) do
file=$FList[$index]
image_size=$IList[$index]
width=`echo $image_size|cut -d "X" -f1`
height=`echo $image_size|cut -d "X" -f2`
for scale_factor in ${SList[@]}; do
for users in ${NList[@]}; do
echo "V: $VM, " "F: $file, " "S: $scale_factor, " "I: $width $height , " "N: $users"
for i in `seq 1 $users` ; do
./sr_run_once.sh $file $width $height $scale_factor &
done
wait
done # for users
done # for scale_factor
done # for index
done # for VM
exit 0
答案 0 :(得分:2)
您是否也尝试使用简单的bash脚本使用pssh,以便查看通信设置是否正常?
$ pssh -h hosts.txt -A -l ben -P -I<./uptime.sh
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
10.0.0.67: 11:06:50 up 28 min, 2 users, load average: 0.00, 0.00, 0.00
[1] 11:06:50 [SUCCESS] 10.0.0.67
10.0.0.218: 11:06:50 up 24 min, 2 users, load average: 0.00, 0.05, 0.20
[2] 11:06:50 [SUCCESS] 10.0.0.218