Ввод и передача аргументов в запущенную команду 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)

Если нужен обмен данными или блокирующий доступ, то доп.механизмы могут быть нужны.

→ Ссылка