2013-05-29 4 views
0

Ниже сценария отлично работает, когда имя пользователя и пароль находятся в правильном порядке при первой попытке, но когда я намеренно выдаю неправильное имя пользователя/пароль, он выдает ошибку. Но как я могу заставить скрипт запрашивать имя пользователя и пароль еще раз, если коммит не выполняется для неправильных учетных данных?Учетные данные для сценария bash для subversion

#!/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-interactive в svn, чтобы предотвратить это:

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: // authentication. В этом случае вы можете настроить пару открытых ключей SSH без пароля и использовать свой скрипт для аутентификации с сервером SVN. Это идеальное решение для ситуаций, когда вы выполняете неинтерактивные скрипты, но также полезно для пользователей, которые раздражены, постоянно помещая их в свой пароль.

Смежные вопросы