linux,使用ping和fping找出网络上的活动主机
网络中有多个主机时,有时需要检查所有不活动的主机,或者活动的主机。这时候可以使用ping或者fping命令
qingsong@db2a:/tmp$ cat ping.sh
#!/bin/bash
for i in 192.168.16.{1..255}
do
ping $i -c 2 > /dev/null 2>&1
[ $? -eq 0 ] && echo "$i is alive"
done
qingsong@db2a:/tmp$ cat ping2.sh
#!/bin/bash
for i in 192.168.16.{1..255}
do
(
ping $i -c 2 > /dev/null 2>&1
[ $? -eq 0 ] && echo "$i is alive"
)&
done
-a选项表明打印出alive的主机
qingsong@db2a:/tmp$ fping -a -g 192.168.16.0/24 2> /dev/null
192.168.16.1
192.168.16.2
192.168.16.128
192.168.16.129
-u选项打印出unreachable的主机
qingsong@db2a:/tmp$ fping -u -g 192.168.16.0/24 2> /dev/null
192.168.16.3
192.168.16.4
192.168.16.5
...<略>...
192.168.16.254
另外fping的 -f选项支持从文件中读取IP列表
网络中有多个主机时,有时需要检查所有不活动的主机,或者活动的主机。这时候可以使用ping或者fping命令
1. ping命令
使用ping命令编写脚本,挨个检查qingsong@db2a:/tmp$ cat ping.sh
#!/bin/bash
for i in 192.168.16.{1..255}
do
ping $i -c 2 > /dev/null 2>&1
[ $? -eq 0 ] && echo "$i is alive"
done
2. 并行ping
上面的命令需要执行很久,可以使用()括上需要执行的部分,最后加一个&符,这样for循环中执行的是多个后台进程,并行处理:qingsong@db2a:/tmp$ cat ping2.sh
#!/bin/bash
for i in 192.168.16.{1..255}
do
(
ping $i -c 2 > /dev/null 2>&1
[ $? -eq 0 ] && echo "$i is alive"
)&
done
3. fping
fping需要单独安装,它能ping一组地址, -g指定一组地址,比如fping -g 192.168.16.1 192.168.16.200
表示这两个地址之间所有的地址。
-a选项表明打印出alive的主机
qingsong@db2a:/tmp$ fping -a -g 192.168.16.0/24 2> /dev/null
192.168.16.1
192.168.16.2
192.168.16.128
192.168.16.129
-u选项打印出unreachable的主机
qingsong@db2a:/tmp$ fping -u -g 192.168.16.0/24 2> /dev/null
192.168.16.3
192.168.16.4
192.168.16.5
...<略>...
192.168.16.254
另外fping的 -f选项支持从文件中读取IP列表