fping
fping是类似于ping的程序,它使用Internet控制消息协议(ICMP)回显请求来确定目标主机是否正在响应。
fping 与ping的不同之处在于,您可以在命令行上指定任意数量的目标,或指定包含要ping的目标列表的文件。fping不会发送到一个目标,直到它超时或答复为止,它会发出ping数据包并以循环方式移至下一个目标。
在默认模式下,如果目标答复,则将其记录下来并从要检查的目标列表中删除;如果目标在特定时间限制和/或重试限制内未响应,则将其指定为不可访问。 ping还支持向目标发送指定数量的ping或无限循环(如 ping)。与ping不同,fping是在脚本中使用的,因此其输出旨在易于解析。
fping安装
此命令在linux中并没有,需要安装相应的软件包,直接点即可下载==>https://github.com/schweikert/fping/releases/download/v4.2/fping-4.2.tar.gz
若linux是使用网络yum源,可以在linux中直接安装
[root@linus /]# wget https://github.com/schweikert/fping/releases/download/v4.2/fping-4.2.tar.gz
下载完成之后,依次执行以下操作,将直接可以使用fping命令
tar -zxf fping-4.2.tar.gz
cd fping-4.2/
./configure prefix=/usr/local/fping
make ; make install
/usr/local/fping/sbin/fping -v
echo "export PATH=$PATH:/usr/local/fping/sbin" >> /etc/profile
tail -1 /etc/profile
fping -v
语法
fping 【选项】 【参数】
选项
使用–help命令可查看fping选项,但是以英文显示,深字为常用选项,以下是fping手册中的选项:
−4,−- ipv4
将名称解析和IP限制为IPv4地址。
-6,-- ipv6
将名称解析和IP限制为IPv6地址。
-a,-- alive
显示活跃的系统。
–A, —地址
按地址而不是DNS名称显示目标。与-d组合,输出将既是ip又是主机名(如果有)。
-b, -size = 字节
要发送的ping数据的字节数。最小大小(通常为12)为fping完成其工作所需的数据(序列号,时间戳)留出空间。报告的接收数据大小包括IP标头(通常为20个字节)和 ICMP标头(8个字节),因此最小总大小为40个字节。默认值为56,如ping所示。最大值是理论上最大的IP数据报大小(64K),尽管大多数系统将其限制为较小的,取决于系统的数字。
-B, -backoff = N
退避系数。在默认模式下,fping在放弃之前将多个请求发送到目标,等待更长的时间以等待每个后续请求的答复。此参数是在每个后续请求上乘以等待时间(-t)的值;必须将其输入为浮点数(xy)。默认值为1.5。
−c, −count = N
发送到每个目标的请求数据包的数量。在此模式下,将为每个收到的响应显示一行(可以用-q或-Q抑制 )。同样,在发送所有请求(或中断请求)时,将显示有关每个目标的响应的统计信息。
−C, −vcount = N
与-c相似,但是按目标的统计信息以为自动响应时间统计信息收集而设计的格式显示。例如:
$ fping -C 5 -q somehost
somehost:91.7 37.0 29.2-36.8
显示了五个请求中每个请求的响应时间(以毫秒为单位),“-”表示未收到对第四个请求的响应。
-d,-- rdns
使用DNS查找返回ping数据包的地址。这使您可以为fping提供IP地址列表作为输入,并在输出中显示主机名。这类似于选项 -n / --name,但是即使您指定主机名作为目标(NAME- > IP- > NAME),也会强制执行反向DNS查找 。
-D,- 时间戳
在以循环或计数模式(-l,-c或-C)生成的输出行的前面添加Unix时间戳。
-e,- 经过
显示数据包经过(往返)的时间。
-f, —文件
从文件中读取目标列表。此选项只能由root用户使用。普通用户应通过stdin传递文件:
$ fping <目标文件>
-g,- 生成 地址/掩码(掩码可不加)
从提供的IP网络掩码或起始IP和终止 IP生成目标列表。在命令行的目标部分中指定网络掩码或开始/结束。如果给出了带有网络掩码的网络,则该网络和广播地址将被排除。例如 要ping网络192.168.1.0/24,指定的命令行可能如下所示:
$ fping -g 192.168.1.0/24
要么
$ fping -g 192.168.1.1 192.168.1.254
-h, --help
打印使用情况消息。
−H, −ttl = N
设置IP TTL 字段(实时跃点时间)。
-i,- 间隔 = MSEC
将ping数据包发送到任何目标之间的最短时间(以毫秒为单位)(默认值为10,最小值为1)。
−I, −iface = IFACE
设置接口(需要 SO_BINDTODEVICE支持)。
-l,- 循环
无限期循环发送数据包到每个目标。可以用Ctrl-C中断;然后显示有关每个目标的响应的统计信息。
-m, --all
将ping发送到目标主机的多个IP地址中的每一个(建议使用选项’-A’)。
-M,-- dontfrag
设置IP标头中的“不分片”位(用于确定/测试MTU)。
-n, --name
如果将目标指定为 IP地址,请对其进行反向DNS查找以
-N,-- netdata
netdata的格式输出
-o,- 中断
根据丢失的ping数量和使用的间隔来计算“中断时间”(对于网络收敛测试有用)。
-O, -tos = N
设置服务标志的类型( TOS)。N可以是十进制或十六进制(0xh)格式。
-p,- 周期 = MSEC
在循环或计数模式(-l,-c或-C)中,此参数设置fping 在连续数据包到单个目标的等待之间等待的时间(以毫秒为单位)。默认值为1000,最小值为10。
-q,-- quet
安静。不显示每个探针的结果,而仅显示最终摘要。也不要显示ICMP错误消息。
-Q,-- squiet = SECS
类似于-q,但每n秒显示摘要结果。
-r,-重 试 = N
重试限制(默认为3)。这是尝试对目标执行ping操作的次数,不包括第一次尝试。
-R,- 随机
代替使用全零作为分组数据,而是生成随机字节。用于打败例如链接数据压缩。
-s,-- src
退出时打印累积统计信息。
-S,-- src = 地址
设置源地址。
-t,- 超时 = MSEC
初始目标超时(以毫秒为单位)。在默认的非循环模式下,默认超时为500ms,它表示fping等待对第一个请求的响应的时间 。连续超时乘以-B指定的退避因子。
在循环/计数模式下,默认超时将自动调整为与“期间”值匹配(但不超过2000ms)。如果愿意,您仍可以使用此选项来调整超时值,但是请注意,将值设置为大于“ period”会产生不一致的结果,因为超时值只能在最后一次ping时才被接受。
还要注意,任何收到的大于超时值的答复都将被丢弃。
-T ñ
被忽略(与fping 2.4兼容)。
-u,-未 到达
显示不可达的目标。
-v,- 版本
打印fping版本信息。
常用实例
注:以下只列举了一些常用的选项
例1:检测192.168.1.0/24范围内的存活主机,-a为查看存活主机,-g为指定范围
[root@linus /]# fping -a -g 192.168.1.0/24 2>/dev/null #将错误输出扔到黑洞文件
192.168.1.11
192.168.1.123
例2:检测192.168.1.10/24-192.168.1.12/24范围内不存活的主机,-u为查看不可达主机
[root@linus /]# fping -u -g 192.168.1.10 192.168.1.12 #192.168.1.11存活,所以没有输出
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.10
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.12
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.12
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.12
ICMP Host Unreachable from 192.168.1.123 for ICMP Echo sent to 192.168.1.12
192.168.1.10
192.168.1.12
例3:向192.168.1.11发送一个ping包
[root@linus /]# fping -c 1 192.168.1.11
192.168.1.11 : [0], 84 bytes, 0.24 ms (0.24 avg, 0% loss)
192.168.1.11 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.24/0.24/0.24
例4:向192.1681.11发送ping包,并显示往返时间
[root@linus /]# fping -e 192.168.1.11
192.168.1.11 is alive (0.39 ms)
例5:无限循环向192.168.1.111发送ping包
[root@linus /]# fping -l 192.168.1.11