2016-05-16 72 views
0

我已經編寫了一個shell腳本來克隆作爲文件發送的多個位置的項目。 我讀了文件,並在循環中傳遞每個位置並執行我的操作。從外殼腳本在git克隆過程中傳遞密碼

LocationFile.txt

Project1=https://[email protected]/my/path/testProject1.git 
Project2=https://[email protected]/my/path/testProject2.git 
Project3=https://[email protected]/my/path/testProject3.git 
Project4=https://[email protected]/my/path/testProject3.git 

Password.txt

Project1=password1 
Project2=password2 
Project3=password3 
Project4=password4 

我有一個密碼文件加密並存儲在服務器上,我可以理解爲腳本的一部分,並通入我的劇本 當我在克隆步驟中運行我的腳本,它提示輸入密碼,我試圖傳遞下面的密碼,這不起作用

############## 
gitpassword=$password1 #retrieved from Password.txt 

for xxx 
    do 
    ... 
    ... 
    git clone "${ProjectArrayList[1]}" 
    read $gitpassword 
    ... 
    .. 
    done 
############## 

我知道我可以做更少的密碼,如果我使用ssh,我不想這樣做。 有沒有辦法用我現有的方法實現這一點

回答

2

您可以使用expectsend函數來自動模擬用戶輸入。

這裏是什麼語法會是什麼樣子:

expect -c 'spawn sudo git clone "${ProjectArrayList[1]}"; expect assword; send "password\n"; interact'