「fping(8)」-

功能简述

向网络主机发送 ICMP ECHO_REQUEST 数据包

常用命令

显示在特定地址范围内主机的存活情况:

# fping -g 172.31.253.100 172.31.253.103
172.31.253.100 is alive
172.31.253.101 is alive
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.103
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.103
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.103
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.103
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.102
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.102
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.102
ICMP Host Unreachable from 172.31.253.100 for ICMP Echo sent to 172.31.253.102
172.31.253.102 is unreachable
172.31.253.103 is unreachable

为两台主机分别生成20个PING包,单台主机收到数据包的间隔为50毫秒,每隔1毫秒发送一个PING包,并报告每个PING包的RTT值:

# fping --quiet --vcount=20 --interval=1 --period=50 127.0.0.1 127.0.0.2
127.0.0.1 : 0.03 0.04 0.07 0.07 0.08 0.04 0.03 0.06 0.03 0.04 0.03 0.03 0.05 0.10 0.06 0.04 0.07 0.05 0.08 0.04
127.0.0.2 : 0.05 0.04 0.02 0.07 0.08 0.02 0.01 0.05 0.02 0.02 0.02 0.03 0.09 0.05 0.06 0.04 0.04 0.07 0.09 0.04

显示某个网段内全部存活的主机:

# fping --quiet --alive -g 172.31.253.1 172.31.253.100
172.31.253.1
172.31.253.100

语法格式

fping [ options ] [ targets... ]

命令描述

该命令类似于 ping(8) 命令,使用 ICMP ECHO_REQUEST 来确定目标主机是否响应。与命令 ping(8) 不同,可以在命令行中指定多台主机,或者指定包含目标主机列表的文件。该命令循环向目标主机发送数据包,而不是在发送数据包后等至单台主机响应或超时。在默认模式中,如果目标响应,则进行标记并从待检查列表中移除;如果目标在特定时间内没有相应或者达到重试次数限制,则标记为不可达。该命令还支持向目标发送特定数量的PING数据包,或者无限循环发送。与ping不同,该命令意图用于脚本,所以输出更容易解析。

命令选项

控制命令行为

-4, –ipv4
强制域名解析网络地址为 IPv4 地址

-6, –ipv6
强制域名解析网络地址为 IPv6 地址

-x, –reachable=N
判断存活主机数是否大于等于 N 参数,如果大于等于则返回真。

-c, –count=N
发送给每个目标主机的数据包数量。在该模式下,为每个收到的响应显示一行信息(可以使用-q-Q选项抑制)。此外,当所有请求发送完成后(或被中断),为每个目标主机显示关于响应的统计信息。

-C, –vcount=N
与选项 -c 类似,但是以自动响应时间采集统计的格式来显示每台主机统计数据。例如:

# fping -C 5 -q somehost
somehost : 91.7 37.0 29.2 - 36.8

为五个请求的每个请求显示响应时间,以毫秒为单位。使用“-”表示第四个请求没有收到响应。

-l, –loop
无限循环地向每个主机发送数据包。使用 Ctrl-C 中断;然后会显示每个目标主机的响应统计信息

-i, –interval=MSEC
发送数据包到任意主机的最小时间间隔(毫秒),默认为 10,最小为 1

-I, –iface=IFACE
指定网络接口(要求 SO_BINDTODEVICE 支持)

-m, –all
如果单个目标主机存在多个网络地址,则向每个地址发送PING数据包。(推荐使用 -A 选项)

-o, –outage
基于丢包数与时间间隔计算中断时间(用于网络聚合测试)

-p, –period=MSEC
在循环或基数模式中(-l, -c, -C),该参数设置命令等待连续数据包到单个主机等待的毫秒数。默认 1000,最小 10

-r, –retry=N
重试次数限制,默认 3。在PING时,尝试次数,不包含首次尝试。

-t, –timeout=MSEC
初始目标超时,毫秒。在默认中,非循环模式,默认超时为500毫秒,它代表fping等待第一个请求响应的总时间。后续的超时时间会被乘以退避系数(由选项-B指定)

在循环或计数模式中,会自动调整默认超时时间以匹配“period”值,但是不超过2000毫秒。仍旧可以使用该选项调整超时时间,但是设置高于“period”的值将导致不一致的结果,因为超时时间只会被最后ping遵守。

另外任何响应只要高于超时时间,就会被丢弃。

-B, –backoff=N
退避系数。在默认模式中,在放弃前,fping 发送若干请求到目标主机,为每个连续请求的回应进行长期等待。在每个连续请求上超时时间将乘以该参数;该参数必须为浮点数。默认 1.5

调整报文属性

-R, –random
使用随机字节作为数据包数据,而不是全零字节。用于阻挠链路数据压缩。

-S, –src=addr
设置源地址。

-M, –dontfrag
设置在IP中的 Don’t Fragment 位(用于确定/测试 MTU 值)

-O, –tos=N
设置 TOS 字段。参数 N 可以是十进制或十六进制格式。

-H, –ttl=N
设置 IP TTL 字段。

-b, –size=BYTES
要发送的PING数据包数据的字节数。用于fping完成任务的数据,最小为12字节(sequence number,timestamp)。报告的接收数据大小包含IP header(为20字节)和ICPM header(为8字节),所以最小总大小为40字节。在ping中,默认 56。最大为IP数据包的理论大小(64K),尽管大多数系统将此限制为最小、系统相关的数值。

输出内容控制

-A, –addr
显示目标主机的网络地址,而不是主机名。配合 -d 选项,同时显示主机名(如果可用)与网络地址

-n, –name
如果以网络地址指定目标主机,则进行反向DNS查找

-d, –rdns
使用DNS查找返回的PING包的地址。这允许你在输入中提供网络地址,在输出中显示主机名。与选项 –name 类似,但是即使提供主机名也会强制执行反响DNS查找(NAME->IP->NAME)

-D, –timestamp
在循环(-l)或计数(-c/-C)模式下,向输出行行首添加时间戳

-q, –quiet
安静模式。隐藏每次探测结果,但是只显示最后概述。并且不显示ICPM错误信息。

-Q, –squiet=SECS
类似与 -q 选项,但是在每 n 秒显示概括结果。

-e, –elapsed
显示数据包的RTT值。

-s, –src
在退出时,打印累积统计信息。

-a, –alive
仅显示存活主机

-u, –unreach
仅显示不可到达的主机

-N, –netdata
输出 netdata 支持的格式(要求-l -Q选项)。参考 http://my-netdata.io 页面。

指定目标主机

-f, –file
从文件中读取主机列表。该选项只能由ROOT用户使用,普通用户应该使用管道:

# fping < targets_file

-g, –generate addr/mask
网络地址掩码开始/结束网络地址中创建目标主机列表。在命令行的targets部分中指定网络地址掩码开始/结束网络地址。如果使用网络地址掩码指定目标主机,将忽略网络地址(x.x.x.0)与广播地址(x.x.x.255)。

如果发送PING到192.168.1.0/24网络,可以使用如下命令:

# fping -g 192.168.1.0/24

# fping -g 192.168.1.1 192.168.1.254

其他选项

-T n
无效选项,用于兼容 fping 2.4版本。

-h, –help
显示帮助信息

-v, –version
显示版本信息

附加说明

退出状态

0 主机全部可达
1 主机部分不可达
2 没有找到主机。比如地址解析失败
3 命令行参数无效
4 系统调用失败

命令限制

如果在编译 fping 命令时,启用 –enable-safe-limits 选项,则非ROOT用户不能使用以下值:
1)-i n, n < 1 msec
2)-p n, n < 10 msec

参考文献