使用ping批量检测设备的实用技巧

用ping批量检测局域网设备状态

在公司或家里管理多台网络设备时,经常需要快速确认哪些设备在线、网络是否通畅。一个个手动ping太费时间,其实可以通过简单的脚本实现批量检测,省时又高效。

比如你是个小公司的IT支持,每天早上要检查办公区的打印机、服务器、监控摄像头等是否正常联网。与其逐个输入ping命令,不如写个小脚本自动跑一遍。

Windows下用批处理批量ping

打开记事本,复制以下内容并保存为 check_devices.bat

@echo off
setlocal enabledelayedexpansion

for /L %%i in (1,1,254) do (
    set ip=192.168.1.%%i
    ping -n 1 -w 100 !ip! | findstr "Reply" > nul
    if not errorlevel 1 (
        echo !ip! 可达
    ) else (
        echo !ip! 无响应
    )
)
pause

这个脚本会扫描192.168.1.1到192.168.1.254的所有IP,快速告诉你哪些能通。你可以根据实际网络段修改IP前缀。

Linux或Mac上用Shell脚本更方便

在终端里创建一个shell脚本:

#!/bin/bash

for i in {1..254}
do
    ip="192.168.1.$i"
    ping -c 1 -W 1 "$ip" > /dev/null
    if [ $? -eq 0 ]; then
        echo "$ip 可达"
    else
        echo "$ip 无响应"
    fi
done

保存为 ping_scan.sh,加上执行权限:chmod +x ping_scan.sh,然后运行:./ping_scan.sh,结果立马出来。

加入设备名让结果更清晰

如果你有几台关键设备,比如财务电脑、NAS存储,可以专门列个清单,让脚本更有针对性。

#!/bin/bash

device_list=(
    "192.168.1.10 财务电脑"
    "192.168.1.20 NAS服务器"
    "192.168.1.30 打印机"
)

for device in "${device_list[@]}"
do
    ip=$(echo $device | awk '{print $1}')
    name=$(echo $device | awk '{print $2,$3}')
    if ping -c 1 -W 1 "$ip" > /dev/null; then
        echo "$name ($ip) 在线"
    else
        echo "$name ($ip) 离线"
    fi
done

这样一跑,谁连上了、谁掉线了,一眼就知道,排查问题也快得多。