我想在一些服务器上运行一些命令。
因此,我创建了一个 bash 文件:
#!/bin/sh
for n in `cat ~/nodes`; do
gnome-terminal -x ssh root@$n
ANYCOMMAND
done
在新的终端上建立了连接。
我如何在每台服务器上应用 ANYCOMMAND?
答案1
一份提案:
#!/bin/bash
while read -r n; do
</dev/null ssh root@$n "ANYCOMMAND"
done < ~/nodes
答案2
有几种工具可用于同时在多台主机上运行命令。其中一些工具会在 X 中打开终端窗口(例如 ClusterSSH),大多数工具用于在 CLI 上运行命令:
http://sourceforge.net/projects/mussh/
https://github.com/Ticketmaster/onall
http://sourceforge.net/projects/clusterssh/
https://code.google.com/p/omnissh/wiki/OmniSSH
https://code.google.com/p/pdsh/
http://www.gnu.org/software/parallel/
http://www.netfort.gr.jp/~dancer/software/dsh.html.en
https://github.com/ndenev/mpssh
http://sourceforge.net/projects/pussh/
对于几乎所有工具,您都可以发送命令并另外拥有交互式 shell。否则,将命令发送到服务器将运行命令,而不是拥有交互式登录 shell。