有没有办法在networking上扫描免费的IP? 我使用nmap -sP 192.168.1.0/24但是这实际上显示了主机。
像这样使用Nmap是一个相当准确的方法来做你所问的,只要有一些先决条件是正确的:
为了获得“可用”地址,您需要获取Nmap报告为“closures”的地址列表。 你可以用一个简单的awk命令来做到这一点:
sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'
使用的Nmap选项摘要:
-v选项时,除了那些“up”之外,Nmap还会打印出find的地址为“down”的地址。 -sP ,我用新的拼写-sn代替,它仍然完成相同的扫描,但是意味着“跳过端口扫描”而不是误导性的“Ping扫描”(因为主机发现阶段不一定意味着ICMP回声扫描或Ping)。 -n选项会跳过反向DNS查找,这会花费您一些时间,因为您对名称不感兴趣,而只是对IP地址感兴趣。 -oG选项告诉Nmap输出grepble格式,这对awk来说更容易处理。 参数“ - ”告诉它发送这个输出到标准输出。 awk命令然后search“Status:Down”并打印包含IP地址的第二个字段。
当然,如果您有权访问交换机的运行configuration或DHCP服务器的租用,则可以更权威地获得此答案,而不进行可能引发安全警报的扫描。
不知道有关n-map,但可以合理地假设,如果你写一个ping脚本,发送1 ping到每个地址,任何回来的“目的地不可达”的主机是空置的,什么回来“请求超时”被占用,但不响应ping。 两个响应之间的区别是“目的地不可达”没有收到对其请求的响应。 “请求超时”是指响应ARP请求的东西,而不是ICMP数据包。
这里是PowerShell中的相同的东西….
((nmap -v -sn -n 10.208.2.0/24 -oG - ) -match "Status\:\sDown") | foreach {($_).Split(" ")[1]}