当首次尝试用户名/密码正确时,下面的脚本工作正常,但是当我故意提供错误的用户名/密码时,它会出错。但是,如果提交错误凭据失败,我怎么能让脚本再次提示用户名和密码?
#!/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 :(得分: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
答案 1 :(得分:0)
或者,您可能希望查看使用svn + ssh://身份验证。在这种情况下,您可以设置没有密码的SSH公钥对,并让您的脚本使用该公钥对SVN服务器进行身份验证。这对于您正在进行非交互式脚本的情况非常理想,但对于因一直输入密码而烦恼的用户也很有用。