在远程服务器中运行命令

时间:2016-01-21 21:29:05

标签: linux unix oracle-sqldeveloper puppet remote-server

在远程服务器中运行命令的最佳方法是什么?我在考虑使用SSH,但是有更好的方法吗? 我使用Red Hat Linux,我想在其中一个服务器上运行该命令,指定我想让命令运行的其他服务器,并且它必须在指定的服务器中执行完全相同的操作。 Puppet无法提供帮助,但我可以将其他工具与Puppet结合起来为我做这份工作。

2 个答案:

答案 0 :(得分:1)

您的解决方案几乎肯定会以某种身份参与ssh

您可能需要一些东西来帮助管理多个服务器上的命令执行;对于类似的事情,ansible是一个很好的选择。

例如,如果我想在一堆服务器上安装libvirt并确保libvirtd正在运行,我可能会将此类配置传递给ansible-playbook

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

这将ssh到我的“库存”中的所有服务器(一个文件 - 或命令 - 提供带有服务器列表的ansible),安装libvirt包,启动libvirtd ,然后安排服务在启动时自动启动。

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

ansible all -m command -a 'puppet apply'

答案 1 :(得分:1)

您似乎无需输入密码即可登录其他服务器。我假设这是基于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也能做到这一点。