[英]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.