2014-01-14 31 views
0

我正在嘗試編寫一個shell腳本,該腳本將給定源文件,目標目錄和hosts文件,scp文件到多個主機。我已經完成了該腳本的工作,但有幾個問題,但文件到達那裏。唯一的問題是我工作的網絡需要每個遠程的密碼。我需要對150個以上的遙控器執行此操作,並且需要此功能才能自動運行,可能還需要一個日誌記錄功能。如果有人能幫助我,將不勝感激。這是我到目前爲止...scp腳本到需要密碼的多個主機

# This is a script to copy files from one host to a group of hosts 
# There are three variables accepted via commandline 
# $1 = first parameter (/source_path/source_filename) 
# $2 = second parameter (/target_directory/) 
# $3 = third paramter (file that contains list of hosts) 
SOURCEFILE=$1 
TARGETDIR=$2 
HOSTFILE=$3 
if [ -f $SOURCEFILE ] 
then 
    printf "File found, preparing to transfer\n" 
    while read server 
    do 
     scp -p $SOURCEFILE ${server}:$TARGETDIR 
done < $HOSTFILE 
else 
    printf "File \"$SOURCEFILE\" not found\n" 
    exit 1 
fi 
exit 0 
+0

使用公鑰/私鑰。如果不允許,則使用'sshpass'使用'sshpass'傳遞密碼。如果不允許,請使用'expect'。 – alvits

+0

這裏有34個答案,這裏搜索S.O.爲'scp無密碼'。你看過他們中的任何一個嗎?祝你好運。 – shellter

回答

2

SSH公鑰認證是一個很好的解決方案在這裏。

總之,運行:

ssh-keygen -t dsa 

要生成公鑰/私鑰對。

然後,添加~/.ssh/id_dsa.pubremote:~/.ssh/authorized_keys

現在,ssh不會要求輸入密碼,因爲它會做一個公鑰認證挑戰來代替。

我這裏寫了一篇文章,介紹了這一些細節:

http://matt.might.net/articles/ssh-hacks/

你不應該修改腳本,這個工作。