有没有基于命令行的方式来向子网中的每台计算机发送ping?类似于
for(int i = 1; i < 254; i++)
ping(192.168.1.i);
如何强制进行ARP解析?
有没有基于命令行的方式来向子网中的每台计算机发送ping?类似于
for(int i = 1; i < 254; i++)
ping(192.168.1.i);
如何强制进行ARP解析?
并非所有的机器都有nmap
,但它是进行网络发现的绝佳工具,而且肯定比独立使用ping
命令更好。
$ nmap -n -sP 10.0.0.0/24 开始 Nmap 4.20 ( http://insecure.org )(时间:2009-02-02 07:41 CST) 主机 10.0.0.1 看起来正常。 主机 10.0.0.10 看起来正常。 主机 10.0.0.104 看起来正常。 主机 10.0.0.124 看起来正常。 主机 10.0.0.125 看起来正常。 主机 10.0.0.129 看起来正常。 Nmap 完成:256 个 IP 地址(6 台主机)在 2.365 秒内扫描完毕。
ping
来确认,为什么? - Honghe.Wunmap -sn 10.0.0.0/24
吗?这样就不会进行 DNS 查询(-n
),并且根据 nmap 手册 的说明,_在之前的 Nmap 版本中,-sn 被称为 -sP_。
@Honghe.Wu 有些主机被配置为不回答 ping。 - Pablo Bianchi我建议使用fping的掩码选项,因为您没有限制ping。
fping -g 192.168.1.0/24
响应结果在脚本中易于解析:
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.5 is alive
...
192.168.1.4 is unreachable
192.168.1.6 is unreachable
192.168.1.7 is unreachable
...
注意:使用参数-a
将限制输出为可达的IP地址,否则fping还将打印不可达地址。fping -a -g 192.168.1.0/24
来自man手册:
fping与ping的不同之处在于,您可以在命令行上指定任意数量的目标,或者指定包含目标列表的文件进行ping。 fping不会像ping一样只发送到一个目标直到超时或回复,而是以循环方式向下一个目标发送ping数据包。
更多信息:http://fping.org/
广播 ping:
$ ping 192.168.1.255
PING 192.168.1.255 (192.168.1.255): 56 data bytes
64 bytes from 192.168.1.154: icmp_seq=0 ttl=64 time=0.104 ms
64 bytes from 192.168.1.51: icmp_seq=0 ttl=64 time=2.058 ms (DUP!)
64 bytes from 192.168.1.151: icmp_seq=0 ttl=64 time=2.135 ms (DUP!)
...
(在Linux上添加-b选项)
我刚看到这个问题,但回答并没有让我满意。所以我自己写了一个:
echo $(seq 254) | xargs -P255 -I% -d" " ping -W 1 -c 1 192.168.0.% | grep -E "[0-1].*?:"
-W 1
")。所以它将在1秒内完成:)
64 bytes from 192.168.0.16: icmp_seq=1 ttl=64 time=0.019 ms
64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=1.78 ms
64 bytes from 192.168.0.21: icmp_seq=1 ttl=64 time=2.43 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.97 ms
64 bytes from 192.168.0.11: icmp_seq=1 ttl=64 time=619 ms
编辑: 这里是相同的脚本,适用于当您的xargs没有-P标志的情况,例如在openwrt中(我刚刚发现)。
for i in $(seq 255);
do
ping -W 1 -c 1 10.0.0.$i | grep 'from' &
done
#!/bin/sh
COUNTER=1
while [ $COUNTER -lt 254 ]
do
ping 192.168.1.$COUNTER -c 1
COUNTER=$(( $COUNTER + 1 ))
done
$COUNTER -lt 255
来测试 192.168.1.254
吗? - chux - Reinstate Monica命令行实用程序nmap也可以做到这一点:
nmap -sP 192.168.1.*
for i in $(seq 1 254); do ping -c1 -t 1 192.168.11.$i; done
添加-t 1
参数只等待一秒钟就退出。如果您只连接了几个设备到该子网,这将大大提高速度。
-t
参数变成了ping
的-w
。 - Adam SibikFOR /L %i in (1,1,254) DO PING 192.168.1.%i -n 1 -w 100 | for /f "tokens=3 delims=: " %j in ('find /i "TTL="') do echo %j>>IPsOnline.txt
FOR
和这种奇怪的语法?我认为边缘技术必须明确地注明。 - pabouk - Ukraine stay strongexport COUNTER=1
while [ $COUNTER -lt 255 ]
do
ping $1$COUNTER -c 1 -w 400 | grep -B 1 "Lost = 0" &
COUNTER=$(( $COUNTER + 1 ))
done
在Linux下,我认为ping -b 192.168.1.255会起作用(192.168.1.255是192.168.1.*的广播地址),但据我所知,在Windows下无法使用该命令。
for i in $(seq 1 254); do ping -c1 -t 1 192.168.11.$i; done
。该命令用于对IP地址范围内的设备进行ping测试,范围为192.168.11.1到192.168.11.254。 - user285594