2017-02-03 2 views
0

Я пытаюсь запустить код, который вызовет скрипт. Сценарий оценивает что-то и загружает результаты на сайт, для которого он запрашивает пароль у пользователя. Необходимо автоматизировать это с помощью общего пользователя.pexpect передать пароль скрипту

У меня есть

import subprocess 
p=subprocess.Popen(cmd,cwd=path) 
p.wait() 

Когда это работает, он оценивает то, и запрашивает пароль. Как передать этот пароль с помощью pexpect? Есть ли другие решения?

ответ

0

Используя spawn class

p = ['cmd','to','run'] 
child = pexpect.spawn(' '.join(p), cwd='/path/to/dir') 
# Now you give a regex of the expected password prompt 
# usually use 'pass.*' 
# but for a general case use '.*' 
child.expect('.*') 
child.sendline('abc123') # your secure password 
child.wait() 
+0

я написал что-то вроде этого. Но он все время ждал. Не знаю, почему ... импорт pexpect CMD = [ 'питона', 'example.py'] УХО = 'путь' ребенок = pexpect.spawn (»» .join (ЦМД), УХО = УХО) child.expect ('*. ') child.sendline (' пароль') child.wait() в example.py я имел это: импорт времени импорта DateTime для г в диапазоне (3): print i time.sleep (1) print (datetime.datetime.now()) k = raw_input ("Пароль: ") , если k == 'password': print" введено " else: print" Не введено " –

+0

Не уверен в проблеме, потому что это работает для меня. Не ожидайте увидеть что-либо напечатанное на экране, потому что вы не захватываете выходной поток example.py. Попробуйте сделать файлы вместо того, чтобы печатать '' введенные '' – Tobey