我需要一个脚本来更新我的存储库副本。当我键入“svn up”时,我通常会被迫输入密码,如何自动输入密码?
我试过的:
import pexpect, sys, re
pexpect.run("svn cleanup")
child = pexpect.spawn('svn up')
child.logfile = sys.stdout
child.expect("Enter passphrase for key \'/home/rcompton/.ssh/id_rsa\':")
child.sendline("majorSecurityBreach")
matchanything = re.compile('.*', re.DOTALL)
child.expect(matchanything)
child.close()
但它似乎没有更新。
编辑:如果重要,我可以使用 child.interact() 更新我的存储库
import pexpect, sys, re
pexpect.run("svn cleanup")
child = pexpect.spawn('svn up')
child.logfile = sys.stdout
i = child.expect("Enter passphrase for key \'/home/rcompton/.ssh/id_rsa\':")
child.interact()
允许我输入密码并开始更新。但是,无论如何我最终都会出错。
-bash-3.2$ python2.7 exRepUpdate.py
Enter passphrase for key '/home/rcompton/.ssh/id_rsa':
At revision 4386.
At revision 4386.
Traceback (most recent call last):
File "exRepUpdate.py", line 13, in <module>
child.interact()
File "build/bdist.linux-x86_64/egg/pexpect.py", line 1497, in interact
File "build/bdist.linux-x86_64/egg/pexpect.py", line 1525, in __interact_copy
File "build/bdist.linux-x86_64/egg/pexpect.py", line 1515, in __interact_read
OSError: [Errno 5] Input/output error
编辑:好吧,我找到了一种解决明文密码输入的方法。我遗漏的一个重要细节(老实说,我认为我不需要,因为这似乎是一个简单的问题)是我必须向我们的 IT 部门发送一个公钥。当我第一次访问 repo 时。避免在我正在处理的 ssh+svn 中输入密码可以使用 ssh-agent 来完成。此链接: http: //mah.everybody.org/docs/ssh提供了一个简单的概述。Daniel Starin 提出的解决方案 Joseph M. Reagle 只要求我在登录时输入一次密码,尽管输入了密码,但我每晚都可以执行我的脚本。