Netdiscover 输出到文件中

Netdiscover 输出到文件中

我正在尝试将 netdiscover 的输出放入一个文件中,我已经尝试了很多方法,以下是一些示例:

sudo netdiscover -i eth0 > netwokdiscovery.txt
timeout 4s $(sudo netdiscover -i eth0)
echo -n "$(sudo netdiscover -i eth0)" > netwokdiscovery.txt
dd if=$(sudo netdiscover -i eth0) of=netwokdiscovery.txt

唯一的问题是我拥有 netdiscover 的所有输出。

我想运行 netdiscover 2 分钟并将最后的输出放入文件中。你知道这是否可行吗?

答案1

不太好的消息

像这样重定向交互式屏幕的输出通常会导致生成一个包含转义序列的文件...这些是您看不到的控制字符序列,用于例如重置/清除终端屏幕或更改光标的位置...等等。

在保存的文件上运行该file命令应该输出如下内容:

$ file file.txt
file.txt: ASCII text, with escape sequences

这种文件/输出无法轻易地被解析/处理,因此无法轻易地分离为记录/块,因此您只能得到最后一个块...有时它甚至无法在终端中正确显示,例如cat file.txt转义序列会改变终端的显示。

最好的办法是使用-P-L开关(产生适合重定向到文件的输出)如所述man netdiscover...但是,这样一来,您将丢失重复的屏幕标题,并且仅一个标题会打印在文件顶部...因此,您无法例如根据标题将文本处理成块...当然,您可以例如将两者的输出结合起来以head打印前 N 行并tail打印后 N 行,例如:

{ head -n 3 file.txt; tail -n 12 file.txt; }

但是,没有标准,例如要多少行tail才不会丢失任何重要的输出。

好消息

我在这篇文章中的另一个回答:当 LAN 网络上有新的 WiFi 设备时发出警告有一个 bash 脚本(终端显示版本) 会 做 你 想 做的事 , 甚至 不需要sudo... 它 会 在 终端 屏幕 上 打印 并 保存 到 日志文件 ... 如果 你 知道 你 的bash.它 也 很 容易 定制 .

相关内容