2016-02-19 128 views
0

我必須使用ssh並行使用shell腳本登錄到各種服務器。 這是一個無密碼認證。我必須登錄到25臺服務器並重新啓動一個需要很長時間的進程。因此,我想同時在所有服務器上執行此過程。我的腳本是這樣的:ssh同時在多個服務器上

while read line 
do 
ssh $line 
------restart process------- 
done < list.txt & 

這裏「list.txt」有服務器列表。我已經使用「&」爲每個迭代調用新shell,併爲所有服務器重複該過程。但是腳本仍然在執行列表中服務器的重新啓動過程。它不會同時執行重新啓動進程。運行腳本的服務器在bash上運行,而需要重新啓動進程的25臺服務器在korn shell上運行。任何人都可以告訴我腳本中的錯誤或使用ssh的並行登錄有可能嗎? 在此先感謝

+0

你有其他選項而不是使用腳本。我的建議將使用使用結構http://www.fabfile.org/完成的腳本或使用其他工具,如pssh https://code.google.com/archive/p/parallel-ssh/ – PerroVerd

+0

@PerroVerd .. ....感謝您的回答....... pssh適合我 – Prashanth

+0

一直在使用clusterssh作爲互動案例。它可以用於在所有主機中鍵入命令,或者只是其中的一個。 – Jokester

回答

0

未經檢驗的,但這應該使用heredoc工作 - 看Wikipedia heredoc

while read line 
do 
    ssh $line <<'EOF' & 
     command 
     command 
    EOF 
done < list.txt 
+0

感謝您的腳本......它的工作原理:) – Prashanth

0

您backgrounding主循環,而不是SSH執行嘗試用這種

while read line 
do 
    ssh $line ---restart process--- & 
done < list.txt 
+0

感謝您的回答。但是重啓過程有很多命令,有些則是其他測試條件。你能告訴我應該在哪裏放置「&」符號來作爲整個過程的後臺,並繼續進行外部while循環的下一次迭代? – Prashanth

+0

簡單的方法是創建另一個腳本restart_process.sh所需的所有命令和它在while循環中的背景 – PerroVerd