如何在多个主机上使用ssh和xargs运行bash脚本,而脚本不会复制到每个主机上?

如何在多个主机上使用sshxargs运行bash脚本,而脚本不会复制到每个主机上?

这工作,
ssh host1.com bash -s <〜/ httpd-conf / weblogrotate.sh

这不起作用,
猫webserver.hosts | xargs -I%ssh%bash -s <〜/ httpd-conf / weblogrotate.sh
tcsh:模糊inputredirect。

猫webserver.hosts
host1.com
host2.com
host3.com

在bash中:

while read host; do ssh $host bash -s < ~/httpd-conf/weblogrotate.sh & done < webserver.hosts 

这也同时运行它们。

我相信你也可以在tcsh中完成,但是我不熟悉shell的语法。

或者,你也可以使用GNU parallel,而不是通过ssh远程执行远程主机的xargs。

你正在寻找DSSH 。 这是一个分布式终端。 执行命令一次,将在所有主机上执行。

主机文件被使用

 $ cat hosts mojito -l noland kodiak mojito kodiak -C mojito -i /home/noland/.ssh/id_rsa kodiak 

运行一个命令

 $ ./dssh.sh "uptime" < hosts mojito:O:0:19:16:45 up 3 days, 14 min, 5 users, load average: 0.22, 0.22, 0.20 kodiak:O:0:13:24:00 up 20:00, 1 user, load average: 0.42, 0.16, 0.05 mojito:O:0:19:16:45 up 3 days, 14 min, 5 users, load average: 0.22, 0.22, 0.20 kodiak:O:0:13:24:00 up 20:00, 1 user, load average: 0.42, 0.16, 0.05 mojito:O:0:19:16:45 up 3 days, 14 min, 5 users, load average: 0.22, 0.22, 0.20 kodiak:O:0:13:24:00 up 20:00, 1 user, load average: 0.42, 0.16, 0.0