Я пытаюсь записать поток netcat в локальный файл, но хочу также аннотировать каждую поточную запись в реальном времени с помощью некоторых метаданных (например, исходного IP-соединения), поскольку Я буду работать с несколькими потоками, которые будут записываться в один и тот же файл.Запись потока Netcat в файл с дополнительным текстом
Например, следующая (команда Баш) работает отлично:
nc 192.168.0.1 443 >> result.txt & echo -n "| Source: 192.168.0.1 | " >> result.txt
Проблема с кодом выше, что он будет только ввести метаданные в первый раз. Таким образом, результат выглядит следующим образом:
Source: 192.168.0.1 | !* Connected!
X
Y
Z
Я хочу, чтобы письменные результаты выглядеть следующим образом:
Source: 192.168.0.1 | !* Connected!
Source: 192.168.0.1 | X
Source: 192.168.0.1 | Y
Source: 192.168.0.1 | Z
Source: 192.168.0.2 | A #<--Written From different netcat stream
К сожалению, я не могу запустить скрипт, чтобы добавить текст метаданных после Netcat завершила его работу , потому что мне нужно каким-то образом идентифицировать поток, поскольку он записывается, поскольку несколько потоков будут записываться в один и тот же файл. В первую очередь ищет решение в bash или python.
Спасибо. Это почти необходимое решение. Когда я запускаю команду nc 192.168.0.1 443 | sed 's/^/Источник: 192.168.0.1 |/g 'Я вижу результаты точно так, как хочу их (записано в stdout). Однако, когда я нажимаю на >> results.txt, он не пишет или не добавляет к файлу. Я играл с перенаправлением вывода, но до сих пор не повезло. Я буду отмечать это как лучший ответ, как только выясню эту последнюю часть. – Karimi
проблема вызвана буферизацией. по умолчанию каждая строка отображается немедленно, если вывод идет на терминал, но если вывод идет в файл, более крупные блоки (4-64 КБ) буферизуются, и файл записывается только после заполнения буфера. См. [Этот вопрос] (http://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe), может быть, один из ответов там поможет вам. – Thawn
В Linux я нашел решение, просто добавьте флаг '-u' в команду sed. Надеюсь, это поможет. – Thawn