6

Я использую эту команду для прослушивания порта и выгрузки данных в файл:

while :  ; do nc -l 0.0.0.0 10000 > log.txt & done

Первый запрос работает отлично, он выгружается в log.txt, но после первого запроса nc больше не прослушивает, а останавливается.

Может кто-то указать мне, что я делаю неправильно?

Я просто хочу, чтобы это работало в фоновом режиме непрерывно и регистрировал любой запрос с этого порта в файл log.txt ...

1 ответ1

12

Вы должны добавить опцию для nc. Опция зависит от версии nc, которую вы используете. Например, в моем случае (Kubuntu), опция -k. Со страницы руководства,

-k Принудительно заставляет nc прослушивать другое соединение после завершения его текущего соединения. Ошибка при использовании этой опции без опции -l.

Я не могу обещать, что -k работает (если, конечно, вы не n Ubuntu), вам придется искать что-то подобное. Например, в моем Debian -k не существует, но вы найдете:

-q секунд после EOF на stdin, подождите указанное количество секунд и затем выйдите. Если секунды отрицательны, ждать вечно

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

Чтобы проверить, что это работает, на одном компьютере:

  nc -k -l 0.0.0.0 10000 > out.txt

На втором ПК:

  echo Hello | nc IP_address_of_first_pc 10000

Выполните указанную выше команду несколько раз, затем прервите команду nc на pc1, проверьте количество строк в out.txt.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .