我正在从远程计算机上的客户端计算机运行ssh命令:
ssh -o "StrictHostKeyChecking no" -i $key 'user'@$public_ip "
i=1;
workerips: "ip1 ip2";
for ip in $worker_ips; do
echo \"ipis: ${ip} and i is ${i}\"
done;"
我的问题是'for'循环内的'$ ip'和'$ i'为空。 '$ i'将其值保留在for循环之外。我在做什么错了?
答案 0 :(得分:3)
使用Heredoc做这样的事情更容易 :
$ ssh -o "StrictHostKeyChecking no" -i "$key" user@$public_ip << \EOF
> i=1
> workerips="ip1 ip2"
> for ip in $workerips; do echo "ipis: ${ip} and i is ${i}"
> done
> EOF
答案 1 :(得分:1)
根据您要执行的操作,并行ssh程序(pssh)可能适合您。
https://linux.die.net/man/1/pssh
这个想法是,您可以跨定义的节点(全面或批量)执行相同的命令。基本的工作量可能是跨多个节点更新配置文件,更复杂的情况包括跨Cassandra群集的快照之类的事情,以确保您几乎同时运行这些快照。