所以!我有一个 nmap 扫描,将输出保存到文件中,nmapscan.txt:
sudo nmap -sP 192.168.1* > nmapscan.txt
我还有一些其他命令来清理并将所有所需的输出保存到一个文件中,livehosts.txt:
cat ./temp/nmapscan.txt | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' > ./temp/macaddresses.txt
其中保存了 mac 地址。和:
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' ./temp/nmapscan.txt > ./temp/ipaddresses.txt
其中保存了 IP 地址。和:
cat ./temp/nmapscan.txt | grep -o -P '(?<=for).*(?=.attlocal)' > ./temp/hostnames1.txt
这保存了主机名。和:
cut -d' ' -f 2 ./temp/hostnames1.txt > ./temp/hostnames2.txt
我这样做是为了清理主机名(抱歉,忘记将其包含在原始帖子中)......并且:
cut -d' ' -f 1 ./temp/hostnames2.txt | paste ./temp/macaddresses.txt ./temp/ipaddresses.txt - > ./temp/livehosts.txt
..这是结合了所需数据并显示如下的最终产品:
xx:xx:xx:xx:xx:xx 192.168.1.1 Netgear
xx:xx:xx:xx:xx:xx 192.168.1.111 John's Toilet Cam
我想再次扫描并写入,并且想要livehosts.txt文件或多或少会更新。只需按原样进行扫描并再次写入即可覆盖文件。并且并非所有设备都在不同时间连接。
我试过了:
>>
但这只会使文件中已有的数据加倍。
将数据加倍、删除重复数据,然后写入新文件是最好的方法吗?
你会怎样做呢?谢谢!
答案1
有太多不必要的操作。
首先,使用-oG
选项(grepable 格式)。这将使您的工作更加轻松。来源:Nmap 参考指南 - 输出。并且不需要进行文件重定向(> nmapscan.txt
),因为 nmap 已经有一个-oN
选项。您可以记录到文件,但仍然可以将输出输出到控制台。
我不确定你的目标规范是否合法:
nmap -sP 192.168.1*
也许nmap
设法正确解释它,据我所知,它不是有效的语法。
相反,请使用192.168.1.0/24
或192.168.1.1-255
(假设您要扫描地址为 192.168.1.0 到 192.168.1.255 的小型网络。