リポジトリのコピーを更新するスクリプトが必要です。「svnup」と入力すると、通常はパスワードの入力を余儀なくされますが、パスワードの入力を自動化するにはどうすればよいですか?
私が試したこと:
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部門に公開鍵を送信する必要があったことです。私が最初にリポジトリにアクセスしたとき。私が扱っているssh+svnでのパスワード入力を回避するには、ssh-agentを使用します。このリンク: http: //mah.everybody.org/docs/sshは簡単な概要を提供します。DanielStarinによるJosephM.Reagleのソリューションでは、ログイン時にパスワードを1回だけ入力するだけで、パスワードを入力しても毎晩スクリプトを実行できます。