Используйте nc для записи нескольких файлов — как?

Я хочу использовать 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  

0

Опустите -k и запустите его в цикле:

  n = 0, пока nc -l 3000> "$ n" .txt  ;  do n = $ ((n + 1)) done  

Улучшите этот ответ
ответил 14 октября 2014 г. в 9:04
  • В принципе, это работает отлично, но я хочу сделать это без перезапуска 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  

0

Я думаю, что Cronolog может помочь в этом случае

параметр -p, вы можете определить параметр периода

Также утилита filewatcher «incron «можно использовать, который проверяет журналы в один файл и может разбивать на некоторые другие файлы

Улучшите этот ответ
отредактировано 14 октября ’14 в 9:32
ответил 14 октября 2014 г. в 9:12
  • К сожалению, это не работает, потому что вывод записывается в отдельные файлы параллельно (так что 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 всех этих файлов с помощью одной команды?


13

На приемнике перейдите в каталог назначения и выполните:

  nc -l $ tcp_port | tar xf -  

затем на отправителе:

  cd sourcedirectorytar cf -. |  nc $ destination_host $ tcp_port  

Улучшите этот ответ
ответил 08 июня 2015 в 14:32
добавить комментарий |

На приемнике перейдите в целевой каталог и выполните:

  nc -l $  tcp_port | tar xf -  

затем на отправителе:

  cd sourcedirectorytar cf -.  |  nc $ destination_host $ tcp_port  

Оцените статью
logicle.ru
Добавить комментарий