Linux - 一次在多台机器上运行相同的命令

Chr*_*nch 40 remote-access linux

我有大约十几个 Linux 机器,偶尔需要在上面运行相同的命令。除了登录到每台机器并一次运行一个命令之外,是否有更简单的方法(或自动化方法)来做到这一点?它不是所有时间都相同的命令,也不是在预设时间,所以它不是像cron.

Jör*_*tag 15

还有ClusterSSH,它完全符合您的想法。是的描述性命名!


Nod*_*ode 12

嗯,也许pconsole就是你想要的工具。


小智 8

你应该看看 Puppet 是一篇关于它的设置和使用的 linux.com文章


小智 8

你可以试试Capistrano。最初它是一个 Rails 部署工具,但随着远程机器的发展,它可以做很多事情。

要获得更完整的多台机器管理方法,您可能需要尝试Chef


pjz*_*pjz 8

也不要忽视psshdsh;它们都很像@Philip Durbin 提到的 gsh。


Rob*_*ert 8

Ansible 具有执行临时命令的能力,并且还可以扩展以执行完整的配置管理。基于组的匹配能力非常出色。

http://docs.ansible.com/intro_adhoc.html


Phi*_*bin 6

我想我会人们似乎喜欢的Stack Overflow复制并粘贴我的答案。. .


如何一次在多台服务器上运行命令的问题前几天出现在 Perl 邮件列表中,我将给出我在那里给出的相同建议,即使用 gsh:http : //outflux.net/unix/软件/gsh

gsh 类似于for box in box1_name box2_name box3_name已经给出的“ ”解决方案,但我发现 gsh 更方便。您设置了一个 /etc/ghosts 文件,其中包含您的服务器,例如 web、db、RHEL4、x86_64 或其他任何(man ghosts)组,然后在调用 gsh 时使用该组。

[pdurbin@beamish ~]$ gsh web "cat /etc/redhat-release; uname -r"
www-2.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-2.foo.com: 2.6.9-78.0.1.ELsmp
www-3.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-3.foo.com: 2.6.9-78.0.1.ELsmp
www-4.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-4.foo.com: 2.6.18-92.1.13.el5
www-5.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-5.foo.com: 2.6.18-92.1.13.el5
[pdurbin@beamish ~]$
Run Code Online (Sandbox Code Playgroud)

例如,您还可以使用 web+db 或 web-RHEL4 组合或拆分幽灵组。

我还要提一下,虽然我从未使用过 shmux,但它的网站包含一个软件列表(包括 gsh),可让您一次在多台服务器上运行命令。 Capistrano已经被提及并且(据我所知)也可能在该列表中。


rgm*_*cha 5

如果您使用的是 KDE 桌面,则konsole具有“向所有会话发送输入”选项。它适用于在同一 konsole 窗口中打开的所有会话。


Jas*_*onV 5

您也可以尝试ssh [user@]hostname [command]然后遍历主机名。

  • 这并不能真正满足“一次性”部分(它是序列化的,而不是并行的),但由于这似乎不是问题主体的要求,这也可能是一个不错的解决方案。 (2认同)