用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这样一跑,谁连上了、谁掉线了,一眼就知道,排查问题也快得多。