将 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.
下不支持
我正在尝试将 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.
下不支持