我有这个命令,它可以很好地为我提供按 IP 地址排序的 IP 地址、MAC 地址和 MAC 供应商列表。
sudo nmap -sn 192.168.103.0/24 | awk '/Nmap scan report for/{printf $5;}/MAC Address:/{print ","substr($0, index($0,$3)) }' | sort -t . -k 4,4n
我需要做的就是更改 awk print 语句,以便在第二列和第三列之间放置一个逗号。所以基本上我最终会得到 3 列,第 1 列是 IP 地址,第 2 列是 MAC 地址,第 3 列是 MAC 供应商名称,所有行均按 IP 地址排序。除了第二列和第三列之间的逗号之外,我得到了我想要的一切。这将是一个用于输入数据库的 CSV 文件。
答案1
一个简单的解决方案是将结果通过管道传输到另一个 awk 。
nmap -sn 192.168.103.0/24 | \
awk '/Nmap scan report for/{printf $5;}/MAC Address:/{print ","substr($0, index($0,$3)) }' | \
awk '{ print $1","$2" "$3" "$4" "$5" "$6 }' | tr -d '()' | sort -t . -k 4,4n
该命令的开头与我仅添加的相同awk '{ print $1","$2" "$3" "$4" "$5" "$6 }'添加第二个彗差
和tr -d '()'此处删除 Mac 供应商周围的括号。