2013-06-05 18 views
0

大家好我學習Python腳本的運行後如何傳遞密碼,我現在卡住了,(使用GUI wxPython的)長的過程

我的問題是,我想運行build.system但build.system在執行開始後詢問系統密碼,我嘗試過使用pexpect,但我不能使用「sudo」。因爲某些原因,我不能使用sudo的,我也

subprocess.call("echo ******* | sudo -S ./build.system %s" % (str(mode))) 

使用Pexpect的嘗試這樣做:

child = pexpect.spawn("./build.system %s" % (str(mode))) 
child.interact() 
child.expect("[sudo] password for system:") 
child.sendline("********") 

我曾嘗試Linux命令也期望。 輸出我得到:

INFO: building for board 
INFO: keeping existing sandbox /home/system/sandbox 
[sudo] password for system: 

預期是:

INFO: building for Stretch board 
INFO: keeping existing sandbox /home/qvisdvr/sandbox 
[sudo] password for qvisdvr:********install alarms/alarms.h 
install alarms/alarms_int.h 
install ccm/ccm.h 
install common/defines.h 
[contd] 

尋找很好的建議,在此先感謝,

+0

是否有錯誤?這是如何失敗的?你看到了什麼 - 你期望什麼? –

+0

@JonClements:沒有錯誤,但我不能將密碼傳遞給終端,我的意思是當進程開始執行。首先make clean然後./build.system – nammu

+0

@nammu您可能需要轉義密碼中的某些字符。例如,需要將「pa $$」替換爲「pa \ $ \ $」才能正確解釋。 – Salem

回答

0
 try: 
      proc = subprocess.Popen(["./build.system %s " % (str(mode))], shell=True) 
      proc.stdin.write("******") 
      proc.stdin.flush() 
     except AttributeError: 
      pass 

這爲我工作。