菜鸟科技网

fping命令如何使用?

fping 是一个强大的网络诊断工具,它的主要功能是快速地、并行地 ping 一台或多台主机,以检查它们是否在线以及它们的响应时间,与传统的 ping 命令相比,fping 在扫描大量主机时效率要高得多。

fping命令如何使用?-图1
(图片来源网络,侵删)

核心特点与优势

为什么需要 fping 而不是系统自带的 ping?主要有以下几个原因:

  1. 速度极快fping 默认是并行发送 ICMP 回显请求的,当扫描 100 个主机时,它不会像 ping 那样一个一个地等,而是同时向这 100 个主机发送请求,然后等待所有响应,这使得它在扫描网段或大量主机时,速度呈数量级提升。
  2. 灵活性高fping 可以轻松地接受来自文件、标准输入或命令行的主机列表,并且支持 CIDR 网络地址表示法(如 168.1.0/24),这是 ping 命令不具备的。
  3. 丰富的输出选项:它可以提供多种格式的输出,包括单行、可解析格式,非常适合编写脚本进行自动化处理。
  4. 可控的行为:可以精确控制尝试的次数、超时时间、间隔时间等,而 ping 命令的这些参数通常比较固定或不易控制。

安装 fping

fping 通常不在 Linux 系统的默认安装中,但可以轻松通过包管理器安装。

  • 基于 Debian/Ubuntu 的系统:

    sudo apt update
    sudo apt install fping
  • 基于 RHEL/CentOS/Fedora 的系统:

    fping命令如何使用?-图2
    (图片来源网络,侵删)
    sudo yum install fping
    # 或者对于 dnf
    sudo dnf install fping
  • macOS (使用 Homebrew):

    brew install fping

常用选项与示例

fping 的基本语法是 fping [options] [hosts...]

基本用法

示例 1:Ping 单个主机

fping www.google.com

输出会显示是否收到回复以及往返时间(RTT)。

www.google.com (142.250.199.100) is alive (42.3 ms)

示例 2:Ping 多个主机

fping 8.8.8.8 1.1.1.1 192.168.1.1

它会并行检查这三个地址。

示例 3:Ping 一个网段(fping 的王牌功能)

fping -g 192.168.1.0/24
  • -g:表示生成目标主机列表。fping 会自动展开 168.1.0/24 这个网段,然后并行地 ping 所有 254 个可用地址。

示例 4:从文件中读取主机列表 假设你有一个文件 hosts.txt如下:

www.google.com
github.com
192.168.1.50
10.0.0.1

你可以这样使用:

fping -f hosts.txt

常用选项详解

选项 全称 描述 示例
-a alive 只显示在线的主机。 fping -a 192.168.1.0/24 > online_hosts.txt
-u unreachable 只显示离线(不可达)的主机。 fping -u 192.168.1.0/24 > offline_hosts.txt
-l loop 循环发送 ping 请求,直到被用户中断 (Ctrl+C)。 fping -l www.google.com
-c count 设置每个主机发送的请求数量(默认为 1)。 fping -c 5 www.google.com (每个主机 ping 5次)
-p period 设置 ping 包之间的间隔时间(毫秒),默认为 1000ms (1秒)。 fping -p 200 -c 5 www.google.com (间隔200ms)
-t timeout 设置等待回复的超时时间(毫秒),默认为 500ms。 fping -t 1000 192.168.1.1 (等待1秒)
-s src 指定源 IP 地址发送 ping 请求(需要相应权限)。 fping -s 192.168.1.100 8.8.8.8
-D 显示时间戳,方便记录日志。 fping -D www.google.com
-q quiet 静默模式,只汇总输出,不显示每个主机的详细信息。 fping -q -a 192.168.1.0/24 (只输出在线主机列表)
-A addr 以 IP 地址而不是主机名显示结果。 fping -A www.google.com
-n name 以主机名而不是 IP 地址显示结果(如果解析成功)。 fping -n 142.250.199.100
-x 当主机不可达时,显示诊断信息(如 "No route to host")。 fping -x 192.168.1.999

输出格式解析

fping 的输出非常清晰,通常包含以下几列: [主机名/IP] is alive (rtt_min/ms rtt_avg/ms rtt_max/ms loss%) [主机名/IP] is unreachable [主机名/IP] is down

示例输出分析:

$ fping -c 3 -q 8.8.8.8 1.1.1.1 192.168.1.999
8.8.8.8 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 10.2/11.5/12.8 ms
1.1.1.1 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 9.8/11.0/12.1 ms
192.168.1.999 : xmt/rcv/%loss = 3/0/100%, min/avg/max = 0.0/0.0/0.0 ms
  • 8.8.81.1.1 是在线的。
  • 168.1.999 是离线的。
  • xmt/rcv/%loss:发送/接收/丢包百分比。
  • min/avg/max:往返时间的最小、平均和最大值(毫秒)。

实际应用场景

场景 1:快速扫描局域网内所有在线主机

# 扫描 192.168.1.0/24 网段,并将在线主机IP保存到文件
fping -a -g 192.168.1.0/24 > lan_alive.txt

场景 2:监控关键服务的可用性 创建一个脚本 check_services.sh

#!/bin/bash
# 定义需要检查的主机列表
HOSTS="www.google.com github.com 8.8.8.8"
# 使用 fping 检查,静默模式只显示在线的
ALIVE_HOSTS=$(fping -q -a $HOSTS)
if [ -z "$ALIVE_HOSTS" ]; then
    echo "所有主机都离线!"
    # 这里可以添加告警逻辑,比如发送邮件
else
    echo "以下主机在线:"
    echo "$ALIVE_HOSTS"
fi

场景 3:网络连通性故障排查 当某个网段无法访问时,可以用 fping 快速定位问题点。

# 检查网关是否在线
fping 192.168.1.1
# 检查 DNS 服务器是否在线
fping 8.8.8.8
# 扫描一个特定子网,看哪些设备能通
fping -u 192.168.10.0/28 | grep "is down" # 查看哪些设备是离线的

fping vs. ping

特性 fping ping
核心用途 批量、快速扫描主机状态 单个、连续测试与特定主机的连通性
并发性 并行发送请求 串行发送请求
目标列表 支持文件、标准输入、CIDR 网段 仅支持单个主机名或 IP
输出 可定制,适合脚本解析 固定格式,交互式强
安装 通常需要额外安装 几乎所有系统都预装
适用场景 网络发现、资产清点、批量监控 临时测试、实时观察延迟波动

fping 是网络管理员和运维工程师的瑞士军刀,如果你需要检查不止一台主机的状态,尤其是在需要处理大量地址或整个网段时,fping 凭借其无与伦比的效率和灵活性,是 ping 命令的最佳替代品和补充,掌握 fping 能极大地提升你的网络诊断和自动化运维能力。

分享:
扫描分享到社交APP
上一篇
下一篇