簡體   English   中英

在遠程服務器上運行命令

[英]Run a command in remote server

在遠程服務器中運行命令的最佳方法是什么? 我正在考慮使用SSH,但是有沒有比這更好的方法了? 我使用過Red Hat Linux,我想在其中一台服務器上運行命令,指定要運行我的命令的其他服務器,並且它必須在指定的服務器上執行完全相同的操作。 Puppet不能僅僅提供幫助,但是我可以將其他一些工具與Puppet結合起來為我完成工作。

您的解決方案幾乎肯定會以某種能力最終涉及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'

看來您無需輸入密碼即可登錄其他服務器。 我假設這是基於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也可以做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM