用fping编写脚本扫描10.0.0.0/24网段在线主机

用fping编写脚本扫描10.0.0.0/24网段在线主机

一、环境准备(安装fping工具)

fping是高效批量ping工具,比系统自带ping更适合网段扫描,先按系统类型安装:

1. Ubuntu/Debian系统

打开终端(Ctrl+Alt+T),执行以下2条命令:

bash 复制代码
sudo apt update  # 更新软件源(确保能找到最新fping版本)
sudo apt install fping -y  # 自动安装fping(-y跳过确认)

2. Rocky Linux/CentOS/RHEL系统

终端执行以下2条命令(fping在EPEL仓库,需先启用):

bash 复制代码
sudo dnf install epel-release -y  # 启用EPEL扩展仓库
sudo dnf install fping -y  # 安装fping

3. 验证fping安装成功

安装后执行命令:

bash 复制代码
fping -v

若输出类似 fping 5.1 及版本信息,说明安装成功;若提示 fping: command not found,重新执行对应系统的安装命令。

二、用Vim编写扫描脚本

目标:编写脚本自动扫描10.0.0.0/24网段(10.0.0.1~10.0.0.254),输出所有ping通的在线IP。

步骤1:创建脚本文件

终端执行命令,创建名为scan_10_0_0_24.sh的脚本文件:

bash 复制代码
touch scan_10_0_0_24.sh
  • 说明:touch命令用于创建空文件,脚本后缀.sh是LinuxShell脚本的标准命名。

步骤2:用Vim打开并编辑脚本文件

终端执行命令,用Vim编辑器打开刚创建的脚本:

bash 复制代码
vim scan_10_0_0_24.sh
  • 此时进入Vim的「普通模式」(不能直接输入文字,需切换到编辑模式)。

步骤3:Vim编辑模式下写入脚本内容

  1. 按键盘上的 i 键(切换到「插入模式」,左下角会显示-- INSERT --,此时可输入文字);
  2. 以下完整脚本,在Vim中编辑,也可以右键粘贴脚本(或按Shift+Insert粘贴):
bash 复制代码
#!/bin/bash

# 脚本功能:扫描10.0.0.0/24网段在线主机(ping通则判定为在线)
# 依赖:已安装fping工具,Linux系统专用
# 网段说明:10.0.0.0/24包含10.0.0.1~10.0.0.254共254个可用IP(排除网络地址10.0.0.0和广播地址10.0.0.255)

# ---------------------- 第一步:定义变量(方便后续修改) ----------------------
IP_FILE="temp_ip_list.txt"  # 临时存放IP列表的文件(扫描后自动删除)
SUBNET_PREFIX="10.0.0"      # 网段前缀(固定为10.0.0,对应10.0.0.0/24)

# ---------------------- 第二步:生成10.0.0.0/24网段IP列表 ----------------------
echo "=== 开始生成10.0.0.0/24网段IP列表 ==="
# 循环生成10.0.0.1到10.0.0.254的所有IP,写入临时文件
for ((i=1; i<=254; i++)); do
    echo "${SUBNET_PREFIX}.$i" >> $IP_FILE  # 拼接IP(如10.0.0.1、10.0.0.2...)并追加到文件
done
echo "IP列表生成完成,共254个IP(存储在$IP_FILE)"

# ---------------------- 第三步:fping批量扫描在线主机 ----------------------
echo -e "\n=== 开始扫描10.0.0.0/24网段在线主机(约3-5秒) ==="
# fping核心参数详解:
# -a:只输出"在线"的主机IP(过滤离线IP)
# -f $IP_FILE:从指定文件读取要扫描的IP列表
# -i 1:ping包发送间隔1毫秒(快速扫描,不占用过多网络资源)
# -t 500:每个IP的超时时间500毫秒(网络不稳定可改为1000)
# 2>/dev/null:忽略fping的错误提示(避免输出杂乱)
ONLINE_HOSTS=$(fping -a -f $IP_FILE -i 1 -t 500 2>/dev/null)

# ---------------------- 第四步:输出扫描结果 ----------------------
echo -e "\n========================================"
echo "10.0.0.0/24网段扫描结果:"
if [ -z "$ONLINE_HOSTS" ]; then
    # 若ONLINE_HOSTS为空,说明未扫到在线主机
    echo "未发现在线主机"
    echo "可能原因:1. 网段错误;2. 网络禁止ICMP(ping)协议;3. 该网段无设备在线;4. 缺少root权限"
else
    # 统计在线主机数量并格式化输出
    HOST_COUNT=$(echo "$ONLINE_HOSTS" | wc -l)
    echo "共发现 $HOST_COUNT 台在线主机:"
    echo "$ONLINE_HOSTS" | nl -w2 -s'. '  # 带序号输出(如1. 10.0.0.7、2. 10.0.0.10)
fi
echo "========================================"

# ---------------------- 第五步:清理临时文件 ----------------------
rm -f $IP_FILE  # 删除临时IP列表文件(避免占用磁盘空间)
echo -e "\n 临时文件已清理,扫描结束"

步骤4:保存脚本并退出Vim

  1. 按键盘上的 Esc 键(退出「插入模式」,回到「普通模式」,左下角-- INSERT --消失);
  2. 输入 :wq(冒号+w+q,含义:w=保存文件,q=退出Vim);
  3. 按回车键,完成保存并返回终端。

三、运行脚本

步骤1:给脚本添加「执行权限」

终端执行命令(确保当前目录是脚本所在目录):

bash 复制代码
chmod +x scan_10_0_0_24.sh
  • 说明:Linux默认新建文件没有执行权限,chmod +x 命令用于赋予文件可执行权限(x=execute执行)。

步骤2:执行脚本(推荐root权限,避免扫描失败)

终端执行命令:

bash 复制代码
sudo ./scan_10_0_0_24.sh
  • 若提示输入密码,输入你的Linux登录密码(输入时不显示明文,输完按回车即可);
  • 非root用户可直接执行 ./scan_10_0_0_24.sh,但可能因权限不足导致扫描结果不准确。

四、扫描结果解读(示例+异常处理)

1. 正常结果示例(扫到在线主机)

复制代码
=== 开始生成10.0.0.0/24网段IP列表 ===
 IP列表生成完成,共254个IP(存储在temp_ip_list.txt)

=== 开始扫描10.0.0.0/24网段在线主机(约3-5秒) ===

========================================
10.0.0.0/24网段扫描结果:
 共发现 3 台在线主机:
 1. 10.0.0.1 
 2. 10.0.0.23  
 3. 10.0.0.56 
========================================

临时文件已清理,扫描结束
  • 带序号的IP即为「在线主机」,可直接使用这些IP进行后续操作(如远程连接)。

2. 异常结果处理

(1)未发现在线主机
复制代码
========================================
10.0.0.0/24网段扫描结果:
 未发现在线主机
可能原因:1. 网段错误;2. 网络禁止ICMP(ping)协议;3. 该网段无设备在线;4. 缺少root权限
========================================

解决办法:

  • ping 10.0.0.1 手动测试1个IP,看是否能ping通(排除网络限制);
  • 确认你的主机是否在10.0.0.0/24网段(执行 ip addr 查看本地IP);
  • 重新用 sudo 执行脚本(root权限可避免ICMP发送限制)。
(2)fping: command not found
  • 原因:fping未安装成功;
  • 解决:重新执行「环境准备」部分的fping安装命令。
(3)Permission denied(权限拒绝)
  • 原因:脚本没有执行权限;
  • 解决:重新执行 chmod +x scan_10_0_0_24.sh 赋予执行权限。
相关推荐
大树8811 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠11 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质11 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush411 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52012 小时前
Linux 11 动态监控指令top
linux
Non-existent98712 小时前
WPS批量清理单元格空白字符的4种方法-异常数字格式处理-实战
excel·wps
Inhand陈工12 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
网络研究院13 小时前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智13 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest13 小时前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全