2013-06-05 4 views
0

Привет всем Я изучаю питон скрипт, и я застрял сейчас (используя WxPython для GUI)как передать пароль после долгого запуска процесса

Мой вопрос, я хочет запустить 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: никаких ошибок, но я не могу передать пароль терминалу, я имею в виду, когда процесс начнет выполняться. Сначала выполните очистку ./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 

Это работает для меня.

Смежные вопросы