手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ping(1M)

名称

ping - 向网络主机发送 ICMP (ICMP6) ECHO_REQUEST 包

用法概要

/usr/sbin/ping host [timeout]
/usr/sbin/ping -s [-l | -U] [-abdlLnrRv] [-A addr_family] 
     [-c traffic_class] [-g gateway [-g gateway...]] 
     [-N next_hop_router] [-F flow_label] [-I interval] 
     [-i interface] [-P tos] [-p port] [-t ttl] host 
     [data_size] [npackets]

描述

ping 实用程序利用 ICMP(在 IPv6 中是 ICMP6)协议的 ECHO_REQUEST 数据报从指定的 host 或网络 gateway 请求 ICMP (ICMP6) ECHO_RESPONSE。如果 host 进行了响应,则 ping 将在标准输出中显示以下内容:

host is alive

...然后退出。否则,在 timeout 秒后,它将写入以下内容:

no answer from host

timeout 的缺省值为 20 秒。

当您指定了 s 标志时,将每秒发送一个数据报(可通过 –I 进行调整)并为它收到的每个 ECHO_RESPONSE 输出一行输出。如果没有响应,则 ping 不会产生输出。在此第二种形式中,ping 将计算往返时间和包丢失统计信息,并在终止或达到超时时显示该信息的摘要。缺省 data_size56 字节,您还可以通过 data_size 命令行参数指定一个大小。如果您指定了可选的 npackets,则 ping 将一直发送 ping 请求,直到它发送了 npackets 个请求或收到了 npackets 个响应。

当使用 ping 进行故障隔离时,请首先对本地主机执行 ping 命令以验证本地网络接口正在运行。

选项

支持以下选项:

–A addr_family

指定目标主机的地址族。addr_family 可以是 inetinet6。地址族确定要使用哪个协议。对于参数 inet,将使用 IPv4。对于 inet6,将使用 IPv6。

缺省情况下,如果提供了主机名,而不是字面值 IP 地址,并且名称服务数据库中存在一个有效的 IPv6 地址,则 ping 将使用该地址。否则,如果名称服务数据库包含一个 IPv4 地址,则它将尝试该 IPv4 地址。

指定地址族 inetinet6 以覆盖缺省行为。如果指定的参数为 inet,则 ping 将使用与主机名关联的 IPv4 地址。如果不存在该地址,则 ping 将指出主机未知,然后退出。它不会尝试确定名称服务数据库中是否存在 IPv6 地址。

如果指定的参数为 inet6,则 ping 将使用与主机名关联的 IPv6 地址。如果不存在该地址,则 ping 将指出主机未知,然后退出。

–F flow_label

指定探测器数据包的流标签。该值必须是介于 0 和 1048575 之间的一个整数。此选项仅对 IPv6 有效。

–D

禁用分段。对于 IPv4,这意味着设置“不要分段”位。对于 IPv4 和 IPv6,这意味着当发送数据报时不允许分段。如果 data_size 超出了 MTU,则 ping 可能会报告因为消息太长而导致发送失败。

–I interval

启用统计信息模式并指定连续两次传输之间的时间间隔。缺省值是一秒。请参见关于 –s 选项的论述。

–L

禁用多播包的回送。通常,成员在外发接口上的主机组中,将向本地计算机发送多播包的一个副本。

–N next_hop_router

指定一个下一中继路由器,使探测器数据包在前往目标主机时经过指定的路由器。此选项实际上将绕过系统路由表并使探测器数据包标头保持不变。只能指定一个下一中继路由器。

–P tos

将探测器数据包中的服务类型 (tos) 设置为指定的值。缺省值为零。该值必须是介于 0 和 255 之间的一个整数。路径中的网关也可以根据探测器数据包中设置的 tos 值以不同的方式来路由探测器数据包。此选项仅对 IPv4 有效。

–R

记录路由。设置 IPv4 记录路由选项,这会将包的路由存储在 IPv4 标头内。只有指定了 –v–s 选项时,才会输出记录路由的内容。只有目标主机在各次回显之间保留了记录路由选项,或者指定了 –l 选项时,才会在返回包上设置它们。此选项仅对 IPv4 有效。

–U

发送 UDP 包而不是 ICMP (ICMP6) 包。ping 将向预期会从目标主机收到 ICMP (ICMP6) PORT_UNREACHABLE 的后续端口发送 UDP 包。

–a

对多宿主目标的所有地址(包括 IPv4 和 IPv6)运行 ping 命令。其输出看起来就像是针对目标的每个 IP 地址运行了一次 ping 命令。如果此选项与 –A 一起使用,则 ping 仅探测属于指定地址族的地址。当与 –s 选项一起使用并且未指定 npackets 时,ping 将以循环方式连续探测目标地址。如果指定了 npackets,则 ping 将向目标的每个 IP 地址发送 npackets 个探测器,然后退出。

–b

仅为此连接绕过全局 IPsec 策略并以明文发送和接收包。使用此选项可以在不依赖 IPsec 的情况下排除网络连接故障。因为此选项将为此连接绕过系统范围内的策略,因此只有超级用户或被授予了 sys_net_config 特权的用户可以使用此选项。

–c traffic_class

指定探测器数据包的通信流量类。该值必须是介于 0 和 255 之间的一个整数。路径上的网关也可以根据探测器数据包中设置的 traffic_class 值以不同的方式来路由探测器数据包。此选项仅对 IPv6 有效。

–d

设置 SO_DEBUG 套接字选项。

–g gateway

指定一个宽松源路由网关,使探测器数据包在前往目标主机时经过指定的主机。对于 IPv4,最大网关数为 8,对于 IPv6,则为 127。请注意,对于 IPv6,某些因素(例如链路 MTU)可能会进一步限制网关的数目。

–i interface_address

对于 IPv4,指定用于多播包的外发接口地址;对于 IPv6,指定用于多播包和单播包的外发接口地址。多播包的缺省接口地址是基于(单播)路由表确定的。interface_address 可以是字面值 IP 地址(例如 10.123.100.99)或接口名称(例如 eri0)或接口索引(例如 2)。

–l

用来使用宽松源路由将探测器数据包发送到指定的主机并再次发送回来。通常与 –R 选项一起指定。如果使用 –g 指定了任何网关,则这些网关将被访问两次(前往和离开目标时都访问)。如果使用了 –U 选项,则此选项将被忽略。

–n

将网络地址显示为数字。ping 通常情况下会对它从收到的包提取的 IP 地址执行反向名称查找。–n 选项会阻止反向查找,因此 ping 将输出 IP 地址而非主机名。

–p port

设置在探测器中使用的基 UDP port 号。此选项与 –U 选项一起使用。缺省的基 port 号为 33434。ping 实用程序最开始将 UDP 包的目标端口号设置为此基编号,并针对每个探测器将其递增 1。

–r

绕过常规路由表,直接发送到所连接网络上的某台主机。如果该主机不在直接连接的网络上,则会返回一个错误。此选项可用来通过已被路由器守护进程丢弃的某个接口来对本地主机执行 ping 命令。请参见 in.routed(1M)

–s

每秒发送一个数据报并收集统计信息。

–t ttl

为单播包和多播包指定 IPv4 生存时间或 IPv6 跳数限制。可以通过 ipadm(1M) set-prop 子命令设置单播包的缺省生存时间(跳数限制),对于 IPv4,请使用 icmp_ipv4_ttl 属性;对于 IPv6,请使用 icmp_ipv6_hoplimit 属性。多播包的缺省生存时间(跳数限制)是一个中继器。请参见“示例”部分。有关更多信息,请参见 ipadm(1M)


注 - 您可能看到某些属性名称以 “_”(下划线)开头。这些属性专用于某个协议,并且可能会被更改或删除。请参见 ipadm(1M)
–v

详细输出。除了来自目标主机的响应外,还列出任何 ICMP (ICMP6) 包。

操作数

host

网络主机

环境变量

如果 MACHINE_THAT_GOES_PING 设置为非空值,ping(1M) 会像提供了 –-s 选项那样处理此设置。在脚本中使用此设置时应谨慎。

示例

示例 1 对 IPv6 使用 ping

此示例显示 ping 向主机 xyz 的所有 IPv6 地址(一次一个)发送探测器数据包。它每秒发送一个 ICMP6 ECHO_REQUEST,直到用户中断它。

istanbul% ping -s -A inet6 -a xyz
PING xyz: 56 data bytes
64 bytes from xyz (4::114:a00:20ff:ab3d:83ed): icmp_seq=0. time=0.479 ms
64 bytes from xyz (fec0::114:a00:20ff:ab3d:83ed): icmp_seq=1. time=0.843 ms
64 bytes from xyz (4::114:a00:20ff:ab3d:83ed): icmp_seq=2. time=0.516 ms
64 bytes from xyz (fec0::114:a00:20ff:ab3d:83ed): icmp_seq=3. time=4.943 ms
64 bytes from xyz (4::114:a00:20ff:ab3d:83ed): icmp_seq=4. time=0.485 ms
64 bytes from xyz (fec0::114:a00:20ff:ab3d:83ed): icmp_seq=5. time=2.201 ms
^C     
----xyz PING Statistics----     
6 packets transmitted, 6 packets received, 0% packet loss     
round-trip (ms)  min/avg/stddev = 0.479/1.583/4.943/1.823
示例 2 使用 ipadm 设置跳数限制

以下命令使用 ipadm(1M) 设置 IPv4 和 IPv6 跳数限制。

# ipadm set-prop -p _ipv6_hoplimit=100 icmp
# ipadm set-prop -p _ipv4_ttl=100 icmp

退出状态

将返回以下退出值:

0

操作成功;计算机处于活动状态。

非零

出现错误。指定了的参数格式错误,或者计算机未处于活动状态。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
network/ping

另请参见

ifconfig(1M)in.routed(1M)ipadm(1M)ndd(1M)netstat(1M)rpcinfo(1M)traceroute(1M)attributes(5)icmp(7P)icmp6(7P)