Я пытаюсь управлять сеансом netcat, используя Python, соединение будет примерно таким:
listening on [any] 1234 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 37878
id #### ----> user input
uid=0(root) gid=0(root) groups=0(root) #### ----> output
pwd #### ----> user input
/root #### ----> output
exit #### ----> user input
Однако я хочу иметь возможность контролировать и обрабатывать каждый вход перед его отправкой, и каждый вывод перед его отображением.
Я пытался использовать подпроцесс, но не смог заставить его работать, мой код был что-то вроде:
#!/usr/bin/python
import subprocess
def listener():
command = ''
proc = subprocess.Popen(['nc', '-lvn','1234'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while (command != 'exit'):
command = bytes(input(),'utf-8')
proc.stdin.write(command)
print(proc.stdout.readline().decode())
listener()
, и я не могу получить какой-либо правильный вывод от другого машина, единственный вывод, который я получаю:
sh: no job control in this shell
Я не против использовать любую другую библиотеку, кроме подпроцесса, если это помогает.