2012-06-06 4 views

답변

2

을 사용하여 파일에 terminal.Store 그것보다는 stdin에서 암호를 읽는 데 사용되는 표준 라이브러리 subprocess

import subprocess 
passwd='mypassword' 
subprocess.call('echo %s|sudo -S vbetool dpms off' % passwd, shell=True) 
+0

에이 모듈을 설치할 수 있지만, sudo는 암호를 부탁드립니다. 암호없이이 코드를 실행해야합니다. 그런 식으로 작동한다면 그것은 나에게 매우 유용합니다. 솔루션 – Viswa

+0

을 제공하십시오. http://stackoverflow.com/questions/5191878/change-to-sudo-user-within-a-python-script – iMom0

+0

thousand thanks로 중복 된 것으로 보입니다. 제대로 작동했는지 – Viswa

0

사용 sudo -S, passwd를 말하고 다음을 수행하십시오

import os 
os.system("sudo -S vbetool dpms off < passwd") 
+0

어디에 stdin 있습니다. 나는 그 파일에 패스워드를 줄 필요가 있다고 생각한다. – Viswa

+0

암호는 내 대답에 따라 'passwd'파일에 저장되어야합니다. – rjv

0

또는

사용자 입력이 필요한 프로그램을 자동화하는 데 일반적으로 사용되는 pexpect 라이브러리를 사용할 수 있습니다.

import pexpect 

child = pexpect.spawn('sudo vbetool dpms off') 
child.expect('Password:') 
child.sendline(password) 
child.expect(pexpect.EOF, timeout=None) 
output_data = child.before 

여기서 예상하는 일치하는 프롬프트를 제공 한 다음 암호를 보냅니다. 그 후에 출력을 수집하고 처리 할 수 ​​있습니다.

이것은보다 일반적이고 패스워드 파이프를 허용하지 않는 프로그램이있을 때 유용합니다.

당신은

easy_install pexpect 
or 
pip install pexpect 
+0

@Viswa :이 솔루션이 효과가 있는지 확인하십시오. – pyfunc

관련 문제