2017-07-31 113 views
2

我是科學計算的新手,並且正在研究一個涉及運行許多模擬的項目。我爲此提供的基礎架構大約有20臺不同的Linux機器,它們共享存儲空間。到目前爲止,我一直在做的工作是單獨使用每臺計算機並手動運行模擬程序,這是一項非常低效的任務。在許多不同的計算機上自動運行程序

考慮到我有電腦和相同的密碼的所有名稱的列表,爲每一個,可能有人提供瞭如何有關自動去許多Linux機器上運行多個可執行文件稀疏的輪廓?什麼我必須爲每個模擬現在做的一個例子是:

$ ssh [email protected] 

[email protected]'s password: 

[email protected]:~$ ./executeprogram 2 5 8 & 

[email protected]:~$ ./executeprogram 2 5 10 & 

[email protected]:~$ ./executeprogram 2 5 12 & 

凡數字只是參數在主目錄下的模擬executeprogram發生在希望你能理解,對於20個不同computername的,這是手工操作非常繁瑣。如果我不清楚我在問什麼,我會道歉;我在這裏問,因爲我沒有詞彙表來知道我應該用什麼來尋找解決這個問題的方法。

+1

第一件事就是設置你的*公共SSH密鑰*。然後編寫一個腳本,爲許多不同的計算機運行'ssh user @ computer remote-program arg1 arg2 ...'。 –

回答

3

如果你的主要問題是不得不爲每個SSH會話輸入密碼,有兩個快速選項。

  1. 將您的SSH pub key複製到每臺遠程機器上。嘗試登錄時,它們不會再要求輸入密碼。 (您可能不希望臨時工作,因爲您的公鑰將被永久添加到遠程計算機的authorized_keys文件中)
  2. 使用sshpass來處理密碼提示。這對於快速和骯髒的工作很好。

    sshpass -p <mypassword> ssh [email protected] <REMOTE COMMAND> 
    

您可以通過使用heredocs如下SSH實現無密碼操作第一運行多個命令,

sshpass -p <mypassword> ssh [email protected] bash<<EOF 
<command 1> 
<command 2> 
... 
EOF 
相關問題