Решения с помощью pexpect не подходит, пробовал уже.
Вот сам вызов процесса
out, err = Popen('sqlmap -u ' + '"' + site + '"' + ' --dbs', shell=True, stdin=PIPE, stdout=PIPE).communicate(input=b'Y')
out, err = Popen('sqlmap -u ' + '"' + site + '"' + ' --dbs', shell=True, stdin=PIPE, stdout=PIPE).communicate(input=b'Y')
sp = subprocess.Popen(...)
sp = subprocess.Popen(['sqlmap -u ' + '"' + site + '"' + ' --dbs'], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) sp.stdin.write(b'Y')
john_16@Linux-home ~/bin $ cat one.py print('Enter X:') x = input() print('Enter Y:') y = input() print('x + y = {}'.format(sum(map(int, (x, y)))))
john_16@Linux-home ~/bin $ python3 one.py Enter X: 1 Enter Y: 2 x + y = 3
john_16@Linux-home ~/bin $ cat two.py from subprocess import Popen, PIPE sp = Popen('python3 one.py', shell=True, stdout=PIPE, stdin=PIPE) for value in sp.stdout: print('Get line: {}'.format(value)) if b'Enter' in value: print('Send value') sp.stdin.write(b'2\n') sp.stdin.flush() print('Finish')
john_16@Linux-home ~/bin $ python3 two.py Get line: b'Enter X:\n' Send value Get line: b'Enter Y:\n' Send value Get line: b'x + y = 4\n' Finish
JOHN_16Спасибо, за подробный ответ, я приму к сведению)
Не надо было так делать. Давайте я вам на конкретном примере покажу как надо было. Напишем консольную программу, которая будет ожидать неоднократный ввод данных от пользователя: