Я хочу использовать nc
в качестве простого TCP/IP-сервера. Пока я запускаю его с помощью:
$ nc -k -l 3000> temp.tmp
Это работает, но пишет все полученные данные обо всех подключениях в один файл. Но я хотел бы иметь отдельные файлы.
Обычно я получаю это, если пропущу переключатель -k
, но затем nc
отключается, как только разрывается первое соединение.
Как я могу сохранить работоспособность nc
, но использовать отдельный файл для каждого входящего запроса? (Или, если это невозможно, есть ли альтернативный инструмент * nix, который может это сделать?)
Обратите внимание, что я не хочу перезапустите nc
, но я хочу, чтобы все это было с одним запущенным экземпляром.
PS: Я знаю, что SO не разрешает вопросы по поиску инструментов, но для меня это только запасной вариант на тот случай, если nc
не сможет сделать это самостоятельно. Итак, извините за часть в скобках…
На приемнике:
$ nc -p 3000 -l | tar -x
От отправителя:
$ tar -c * | nc 3000
Опустите -k
и запустите его в цикле:
n = 0, пока nc -l 3000> "$ n" .txt ; do n = $ ((n + 1)) done

-
В принципе, это работает отлично, но я хочу сделать это без перезапуска
nc
. (Извините, я забыл указать это в своем вопросе, сейчас добавлю). — Голо Роден, 14 окт. 2014 г., в 9:06 -
Хорошо, понял. Я не уверен, возможно ли это. Можем присмотреться позже. — hek2mgl 14 окт. ’14 в 9:08
-
@ Голо Роден. Какую ОС вы используете? — hek2mgl 15 окт. ’14 в 14:24
-
OS X и Ubuntu, но в первую очередь OS X. — Голо Роден, 15 окт., 14:59
-
@GoloRoden Тогда вполне вероятно, что вы используете версию netcat для BSD. Также доступна версия, которая называется
netcat-Traditional
(попробуйте Ubuntu, она есть в репозиториях), она поддерживает параметры-e
, которые могут быть используется для запуска сценария при каждом подключении. Вы можете взглянуть на эту версиюnc
. В противном случае может быть решение с использованиемsocat
, необходимо изучить это. — hek2mgl 15 окт. ’14 в 15:20
Опустите -k
и запустите его в цикле:
n = 0 при nc -l 3000> "$ n" .txt; сделать n = $ ((n + 1)) done
Я думаю, что Cronolog может помочь в этом случае
параметр -p, вы можете определить параметр периода
Также утилита filewatcher «incron «можно использовать, который проверяет журналы в один файл и может разбивать на некоторые другие файлы

-
К сожалению, это не работает, потому что вывод записывается в отдельные файлы параллельно (так что ev ery файл содержит одни и те же данные всех запросов). — Голо Роден, 14 октября 2014 г., в 9:14
-
Из вопроса я подумал, что вам нужно параллельное письмо. Тогда вам следует придерживаться подхода к ротации журналов — Ашиш 14 окт., 2014, 09:21
Я думаю, что Cronolog может помочь в этом случае
параметр -p, вы можете определить параметр периода
Также можно использовать утилиту filewatcher «incron», которая проверяет журналы в один файл и может разделять их на некоторые другие файлы
Как netcat для всех файлов в моем каталоге?
У меня есть каталог файлов, который я хотел бы передать netcat на другой компьютер.
Для одного я использую
nc
Но если у меня есть каталог
sample1.flssample2.flssample3.flssample4.flssample5.flssample6.fls
Как я могу netcat всех этих файлов с помощью одной команды?
На приемнике перейдите в каталог назначения и выполните:
nc -l $ tcp_port | tar xf -
затем на отправителе:
cd sourcedirectorytar cf -. | nc $ destination_host $ tcp_port

На приемнике перейдите в целевой каталог и выполните:
nc -l $ tcp_port | tar xf -
затем на отправителе:
cd sourcedirectorytar cf -. | nc $ destination_host $ tcp_port