仅输出具有nmap的在线计算机的IP地址


19

我知道如何使用nmap来查找当前在线的主机列表。我想做的是获取仅其IP地址的列表,现在它显示了更多信息,例如

Nmap scan report for 192.168.x.x' and 'Host is up (0.12s latency).

我想要的是能够运行nmap命令,获取当前处于联机状态的IP地址的文本文档。

这是可能吗?

Answers:


33

这是常见的一种:

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

选项和命令的快速概要:

  • -n关闭反向名称解析,因为您只需要IP地址。在本地LAN上,这也可能是最慢的步骤,因此可以大大提高速度。
  • -sn表示“不进行端口扫描”。与旧版本相同,不建议-sP使用助记符“ ping扫描”。
  • -oG -“可重复的”输出发送到stdout,该输出将通过管道传输到awk
  • /Up$/ 仅选择以“ Up”结尾的行,表示在线的主机。
  • {print $2} 打印第二个空格分隔的字段,即IP地址。

为什么后面要有$ /Up?我发现该命令nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up/{print $2}'提供了相同的结果。
Michael Michael

1
@Michael这是额外的安全级别,可以确保在其他字符串包含“ Up”的情况下,我们不会打印垃圾。这样,即使您针对来自另一种类型的扫描的文件中的可重复输出运行它,该方法也可以正常工作,例如-sV,其中可能包含来自网络服务横幅的不可预测的字符串。
bonsaiviking

3

您可以将其传送到awk

nmap -sP 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'
192.168.1.1
192.168.1.10
192.168.1.20
192.168.1.30
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.