Ввод и передача аргументов в запущенную команду bash
Необходимо подключиться к серверу и передавать ему ответы на его вопросы, в зависимости от их содержания. Я написал такой код.
import subprocess
dict = {'a':1, 'b':2, 'c':3}
data = subprocess.run(["nc", "<ip>", "<port>"], text=True)
if data in dict:
answer1 = subprocess.run('input2')
print(answer2)
else:
answer2 = subprocess.run('input2')
print(answer2)
Столкнулся с такой проблемой: Первая команда запускается и я вижу ответ от сервера с вопросом, но т.к. эта команда не завершает выполнение, то мои другие команды не запускаются и я не могу ответить серверу. Я не должен разрывать соединение, но при этом у меня не получается передавать команды после запуска первой. Как это можно исправить?
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Условно как-то так может выглядеть относительно вашего кода, насколько я его понял:
from threading import Thread
def thread_work (list1, text):
# Заменить на то, что нужно
pass
def thread_work1 ():
answer1=(input('input2'))
print (answer1)
def thread_work2 ():
answer2=(input('input2'))
print (answer2)
thr0 = Thread(target=thread_work, args=(["nc", "<ip>", "<port>"], True,))
thr1 = Thread(target=thread_work1)
thr2 = Thread(target=thread_work2)
Если нужен обмен данными или блокирующий доступ, то доп.механизмы могут быть нужны.