运行 远程服务器中的命令

Run a command in remote server

在远程服务器中 运行 命令的最佳方式是什么?我正在考虑使用 SSH,但还有比这更好的方法吗? 我使用了 Red Hat Linux,我想 运行 其中一台服务器中的命令,指定我想要的其他服务器有我的命令 运行,并且它必须执行完全相同的操作服务器中指定的东西。 Puppet 不能单独提供帮助,但我可以将其他一些工具与 Puppet 结合起来为我完成这项工作。

您的解决方案几乎肯定会在某种程度上涉及 ssh

您可能需要一些东西来帮助管理命令在多台服务器上的执行; ansible 是这样的一个很好的选择。

例如,如果我想在一堆服务器上安装 libvirt 并确保 libvirtd 是 运行ning,我可能会将这样的配置传递给 ansible-playbook:

- hosts: all
  tasks:
    - yum:
        name: libvirt
        state: installed
    - service:
        name: libvirtd
        state: running
        enabled: true

这将通过 ssh 连接到我的 "inventory" 中的所有服务器(一个文件——或命令——为 ansible 提供服务器列表),安装 libvirt 包,启动 libvirtd,然后设置服务开机自动启动。

或者,如果我想在一堆服务器上 运行 puppet apply,我可以只使用 ansible 命令来 运行 和 ad-hoc不需要配置文件的命令:

ansible all -m command -a 'puppet apply'

看来您不用输入密码也能登录到其他服务器。我假设这是基于 SSH 密钥,如下所述:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-ssh-configuration-keypairs.html

您说另一个脚本正在生成服务器列表。您现在可以使用以下简单脚本来遍历列表:

for server in `./server-list-script`; do
  echo $server:
  ssh username@$server mkdir /etc/dir/test123
done >logfile 2>&1

文件"logfile" 将收集输出。我很确定 Puppet 也能做到这一点。