Получите выходные данные от netcat и отправьте ответ

#python #bash

Вопрос:

 ~$ nc 0.0.0.0 11111
==========
echo me: 20744467
==========
20744467
Correct!

==========
echo me: 78587225
==========
78587225
Correct!

==========
echo me: 98051617
==========
...
 

и т.д.

Я попробовал nc 0.0.0.0 11111 > output.txt , и кажется, что вывод можно отправить output.txt , но я понятия не имею, как автоматически отправить ответ обратно по сценарию (см. Блок кода выше).

Редактировать:

Я попробовал скрипт на python:

 import socket, sys

sock = socket.socket()
sock.connect((ip, port))

while True:
        data = sock.recv(1024).decode()
        if not data: sys.exit(0)
        print("server output:n"   data) #debug
        input = ""
        for elem in data:
                if elem.isnumeric():
                        input = input   elem
        print("input = "   input)
        sock.send(input.encode())
 

Он застрянет на первой итерации.

Ответ №1:

Попробуй-Н

 for R in 20744467 78587225 98051617 ; do printf '%sn' "${R}" ; done | nc -N 0.0.0.0 11111 > output.txt
 

Комментарии:

1. Извините за двусмысленность, но эти цифры случайны. Поэтому я думаю, что мне нужно прочитать вывод, получить номер после echo и отправить его обратно.

2. Добро пожаловать в Stack Overflow. Дампы кода без каких-либо объяснений редко бывают полезны. Переполнение стека-это обучение, а не предоставление фрагментов для слепого копирования и вставки. Пожалуйста, отредактируйте свой вопрос и объясните, как он отвечает на конкретный задаваемый вопрос.

Ответ №2:

попробуйте перенаправить и тройник

 nc 0.0.0.0 11111 2>amp;1 | tee output.txt