NMap 仅显示已关闭的 IP 地址

NMap 仅显示已关闭的 IP 地址

一个优秀的命令只显示那些正在响应的 IP 地址

nmap -n -sn 192.168.1.0/24 -oG - | awk '/Up$/{print $2}'

浏览所有这些可能会很痛苦,找到一些没有响应的(如果想要分配免费 IP)。是否有一行行只显示那些没有响应的地址?

答案1

nmap有一个详细选项-v

详细程度和调试选项

-v(增加详细级别),-vlevel(设置详细级别)

增加详细级别,使 Nmap 打印有关正在进行的扫描的更多信息。

它将显示所有已扫描的主机,而不仅仅是那些应答的主机,并显示那些未应答的主机的状态Down。因此,只需使用结果过滤Down即可,而不是Up

    nmap -n -sn -v 192.168.1.0/24 -oG - | awk '/Down$/{print $2}'

应删除结果的第一个和最后一个元素,因为这些是网络(此处为 192.168.1.0)和广播地址(192.168.1.255)通常不可用于系统。由于不能保证顺序,因此还需要版本排序:

    nmap -n -sn -v 192.168.1.0/24 -oG - | grep '^Host:' | sort -k 2 -V | tail -n +2 | head -n -1 | awk '/Down$/{print $2}'

注意:nmap有一个 XML 输出(使用),在脚本中与或-oX -等工具一起使用可能更可靠。唉,它不像 JSON 那样易于使用该工具,所以我没有尝试使用这种格式。xmlstarletxmllintjq

答案2

为什么要使用 nmap 呢?我会这样做:

for ((i=0;i<255;i++)); do ping -W 1 -c 1 192.168.1.${i} >/dev/null 2>&1 || echo "192.168.1.${i} is available" ; done

注意:

  • -W 1就是设置超时时间为1秒
  • -c 1就是退出前只发送一个 ICMP Echo Request。

相关内容