2013-01-02 2 views
0

저장소의 사본을 업데이트하는 스크립트가 필요합니다. "svn up"을 입력하면 대개 암호를 입력해야합니다. 어떻게 암호 입력을 자동화합니까?암호 입력으로`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 부서에 공개 키를 보내야한다는 것입니다. 내가 처음 레포에 접근했을 때. 내가 다루고있는 ssh + svn에서 암호 입력을 피하는 것은 ssh-agent로 할 수있다. 이 링크 : http://mah.everybody.org/docs/ssh을 사용하면 쉽게 둘러 볼 수 있습니다. Daniel Starin의 솔루션 인 Joseph M. Reagle은 로그인 할 때마다 암호를 한 번만 입력하면 암호 입력에도 불구하고 매일 스크립트를 실행할 수 있습니다.

+0

당신은 SVN으로 인증된다? – Eric

+0

ssh 키로부터 판단 암호 프롬프트 - ssh를 통해) – favoretti

+1

svn + ssh : // 프로토콜을 사용하고 있습니다. – dranxo

답변

1

비밀번호를 여러 번 입력하지 않고도 보안 솔루션을 사용하려면 ssh-agent을 사용하여 잠시 동안 키 암호를 유지하십시오. 기본 개인 키를 사용하는 경우 ssh-add을 입력하고 묻는다면 암호를 입력하십시오. ssh-add 명령 사용에 대한

자세한 내용은 여기에 있습니다 : 어떤 프로토콜을 통해 linux.die.net/man/1/ssh-add

0

정말 ssh를 공개 키와 함께 사용해야합니다.

이없는 경우, 당신은 단순히 내용으로 ~/.subversion/auth/svn.simple/에 새 파일을 만들 수 있습니다

K 8 
passtype 
V 6 
simple 
K 999 
password 
V 7 
password_goes_here 
K 15 
svn:realmstring 
V 999 
<url> real_identifier 
K 8 
username 
V 999 
username_goes_here 
END 

999 개 번호는 다음 라인 (마이너스 \n)의 길이 있습니다. 파일 이름은 영역 문자열의 MD5 합계 여야합니다.