我有一个包含大约500个设备的文件,我需要ping它以检查它们当前是否可以从我的网络周围的各个子网访问。它本质上是检查路由/可访问性问题的基本测试。
不确定从哪里开始。我有一个基本文件,我已经逐行将每个IP放在一个文件中。
例如,文件如下所示:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
我需要它返回类似下面的内容,如果第三行没有得到回复:
192.168.1.1 Accessible
192.168.1.2 Accessible
192.168.1.3 Inaccessible
192.168.1.4 Accessible
我在这里运行Ubuntu。抱歉不知道从哪里开始!
干杯 史蒂夫。
答案 0 :(得分:3)
您应该在ping扫描模式下使用nmap
:
nmap -sn -oG - -v -iL hosts_to_scan.txt
这将尝试ping hosts_to_scan.txt
文件中包含的所有主机。
顺便说一下,如果是这种情况,您还可以指定子网:
nmap -sn -oG - -v 192.168.1.0/24
和/或将结果保存到文件:
nmap -sn -oG status.txt -v 192.168.1.0/24
nmap -sn -oG status.txt -v -iL hosts_to_scan.txt
答案 1 :(得分:1)
基本架构将ping每个服务器并打印结果。
如果您将IP存储在ips.txt
文件中,则可以执行以下操作:
while read my_ip
do
test_ping $my_ip
done < ips.txt
然后创建一个函数,例如test_ping
,对每个IP执行一次ping:
test_ping () {
if ping -c 1 $1 &> /dev/null
then
echo "$1 Accessible"
else
echo "$1 Inaccessible"
fi
}
答案 2 :(得分:1)
我可能会使用nmap作为一个很长的列表,但是如果你在一个命令行中并且需要一个快速的单行程序,那么这也可以:
$ for i in `cat file.txt `;do ping -c 1 $i;done
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=50 time=16.271 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 16.271/16.271/16.271/0.000 ms
PING 8.8.4.4 (8.8.4.4): 56 data bytes
64 bytes from 8.8.4.4: icmp_seq=0 ttl=50 time=16.030 ms
--- 8.8.4.4 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 16.030/16.030/16.030/0.000 ms
从积极的方面来说,这种方法很容易记住。 (可能)与所有主要shell(bash,zsh,* sh?)一起工作。
另一方面,它相当冗长,你不想要200个IP,甚至10个可能很难监控。
如果nmap
无法删除,我会用ruby,pytho或任何你喜欢的语言编写脚本。
编辑:这个更干净,还有一些额外的统计数据:
for i in `cat file.txt `;do ping -c 1 $i|grep 64;done
64 bytes from 8.8.8.8: icmp_seq=0 ttl=50 time=15.397 ms
64 bytes from 8.8.4.4: icmp_seq=0 ttl=50 time=13.170 ms
使用gnu-tools几乎无法做任何事情。