将 Netcat 流写入带有附加文本的文件

Writing a Netcat stream to file with additional text

我正在尝试将 netcat 流写入本地文件,但我还想用一些元数据(即连接的源 IP)实时注释每个流式条目,因为我将使用多个将写入同一文件的流。

例如,以下(bash 命令)工作正常:

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.

中寻找解决方案

尝试 sed (stream editor):

nc 192.168.0.1 443 | sed -u 's/^/Source: 192.168.0.1 | /g' >> results.txt

这应该用文本 Source: 192.168.0.1 | 替换每行 ^ 的开头 我用 tail -f some.file | sed -u 's/^/Source: 192.168.0.1 | /g'>t.txt 测试了它并得到:

Source: 192.168.0.1 | line one
Source: 192.168.0.1 | line two
Source: 192.168.0.1 | ...
Source: 192.168.0.1 | line n

nb: -u 标志是为了防止 sed 使用缓冲。此标志仅在 linux 下受支持,在 mac OSX.

下不支持