2011-04-01 87 views
4

我想電腦(詹金斯節點)的列表上安裝一個軟件庫(SWIG)。我使用下面的腳本來自動幾分此:如何自動輸入密碼?

NODES="10.8.255.70 10.8.255.85 10.8.255.88 10.8.255.86 10.8.255.65 10.8.255.64 10.8.255.97 10.8.255.69" 
for node in $NODES; do 
    scp InstallSWIG.sh [email protected]$node:/root/InstallSWIG.sh 
    ssh [email protected]$node sh InstallSWIG.sh 
done 

這種方式是自動的,除了兩個SCP和SSH命令中發生的密碼請求。

有沒有一種方法以編程方式輸入密碼?

安全不是一個問題。我正在尋找不涉及SSH密鑰的解決方案。

回答

4

使用SSH做正確的方法是使用鍵而不是。

# ssh-keygen 

,然後複製*的〜/ .ssh/id_rsa.pub *文件到遠程機器(根@ $節點)到遠程用戶的的.ssh/authorized_keys文件。

+1

「安全不是問題,我找不涉及SSH密鑰的解決方案。」 – Chiguireitor 2015-09-09 21:44:58

0

Wes的答案是正確的,但如果你是熱衷於髒東西又慢,你可以使用expect自動執行此。

2

您可以執行使用empty,從SourceForge的小工具的任務。這與預期相似,但在這種情況下可能更方便。一旦你已經安裝了它,你的第一個scp將以下兩個命令來完成:在後臺

./empty -f scp InstallSWIG.sh [email protected]$node:/root/InstallSWIG.sh 
echo YOUR_SECRET_PASSWORD | ./empty -s -c 

第一個開始你的命令,它欺騙以爲它是在一個終端上的交互模式下運行。另一個從標準輸入發送它的數據。當然,將密碼放在命令行的任何位置都是有風險的,因爲shell歷史被保留,用戶可以在ps結果中看到它。等等也不安全,但是更好的一點是將密碼存儲在文件中並重定向來自該文件的第二個命令的輸入,而不是使用echo和管道。

複製到服務器後,可以以類似的方式運行腳本:

./empty -f ssh [email protected]$node sh InstallSWIG.sh 
echo YOUR_SECRET_PASSWORD | ./empty -s -c