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

时间:2015-11-25 07:21:44

标签: python linux bash stream netcat

我正在尝试将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中寻找解决方案。

1 个答案:

答案 0 :(得分:1)

尝试sed( s tream ed itor):

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。