2013-05-29 109 views
0

下面的腳本工作正常時,用戶名/密碼是正確的第一次嘗試,但當我故意給錯誤的用戶名/密碼它出錯。但如何提交用戶名和密碼,如果提交失敗的錯誤的憑據我怎麼能腳本?bash腳本憑證顛覆

#!/usr/bin/bash 

read -p "Enter message: " svnmessage 
read -p "Enter username: " username 
read -s -p "Enter Password: " password 


svn commit test.log -m "$svnmessage" --username $username --password $password --non-interactive 

當我給錯誤的用戶名/密碼:

Enter message: some message 
Enter username: wrong name 
Enter Password: 
svn: E170001: Commit failed (details follow): 
svn: E170001: POST of '/svn/IL_IES_Demo/!svn/me': authorization failed: Could not authenticate to server: rejected Basic challenge (http://10.118.19.200:8080) 

回答

0

我猜你可以通過--non-interactivesvn防止這種情況:

svn commit test.log -m "$svnmessage" --non-interactive --username $username --password $password 

我假設svn commit將返回0成功,所以(未經測試):

#!/usr/bin/bash 

while true 
do 
    read -p "Enter message: " svnmessage 
    read -p "Enter username: " username 
    read -s -p "Enter Password: " password 

    svn commit test.log -m "$svnmessage" --non-interactive --username $username --password $password 

    if [ $? -eq 0 ] 
    then 
     break 
    fi 
done 
+0

肖恩..幫助 - 第一個問題(更新問題!)。謝謝。現在我正在尋找腳本詢問用戶名和密碼,直到證書正確。 – iaav

+0

非常感謝!工作! – iaav

+0

我會把_all_變量放在雙引號中:'svn commit test.log -m「$ svnmessage」--non-interactive --username「$ username」--password「$ password」',我也推薦將'-r'選項添加到'read'中。 (否則,如果密碼包含例如末尾的反斜線或任何地方的空格,則腳本將失敗。) – Uwe

0

另外,你可能想看看使用svn + ssh://認證。在這種情況下,您可以設置一個沒有密碼的SSH公鑰對,讓您的腳本使用它對SVN服務器進行身份驗證。對於非交互式腳本的情況來說,這非常適用,但對於那些一直感到煩惱的用戶也很有用。