登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
shell脚本快速检查192.168.1网段ip是否在用
shell脚本快速检查192.168.1网段ip是否在用
[ 复制链接 ]
糙昧邵
2025-6-9 14:29:44
检查 192.168.1 网段中哪些 IP 地址正在使用,可以使用 Shell 脚本结合 ping 命令来并发扫描整个网段。以下是实现这一功能的完整脚本:
脚本:检查 192.168.1 网段 IP 是否在用
#!/bin/bash
# 定义网段
NETWORK="192.168.1"
# 定义超时时间(秒)
TIMEOUT=1
# 定义并行扫描的 IP 数量
PARALLEL=20
# 日志函数
function log_info() {
echo -e "[INFO] $1"
}
function log_success() {
echo -e "\033[32m[SUCCESS] $1\033[0m"
}
function log_error() {
echo -e "\033[31m[ERROR] $1\033[0m"
}
# 检查单个 IP 是否在线
function check_ip() {
local ip=$1
if ping -c 1 -W "$TIMEOUT" "$ip" &> /dev/null; then
log_success "IP $ip is online"
else
log_error "IP $ip is offline"
fi
}
# 主函数
function main() {
log_info "Scanning network $NETWORK.0/24..."
# 使用循环遍历 1-254 的 IP 地址
for i in {1..254}; do
ip="$NETWORK.$i"
check_ip "$ip" &
# 控制并行数量
if [[ $(jobs -r -p | wc -l) -ge $PARALLEL ]]; then
wait -n
fi
done
# 等待所有后台任务完成
wait
}
# 执行主函数
main
复制代码
脚本说明
网段定义
NETWORK="192.168.1":定义要扫描的网段。
超时时间
TIMEOUT=1:设置 ping 命令的超时时间为 1 秒。
并行扫描
PARALLEL=20:设置同时扫描的 IP 数量为 20 个,以提高扫描效率。
日志输出
使用不同颜色的日志区分在线和离线的 IP 地址:
绿色:IP 在线。
红色:IP 离线。
check_ip 函数
使用 ping 命令检查单个 IP 是否在线。
如果 ping 成功,则 IP 在线;否则,IP 离线。
主函数 main
遍历 192.168.1.1 到 192.168.1.254 的所有 IP 地址。
使用 & 将 check_ip 放入后台执行,实现并行扫描。
使用 jobs 和 wait 控制并行任务数量。
使用方法
将脚本保存为 scan_network.sh。
赋予执行权限:
chmod +x scan_network.sh
复制代码
运行脚本:
./scan_network.sh
复制代码
示例输出
[INFO] Scanning network 192.168.1.0/24...
[SUCCESS] IP 192.168.1.1 is online
[ERROR] IP 192.168.1.2 is offline
[SUCCESS] IP 192.168.1.3 is online
[ERROR] IP 192.168.1.4 is offline
...
复制代码
优化建议
增加 IP 范围参数
可以通过命令行参数指定扫描的 IP 范围,例如:
./scan_network.sh 192.168.1.10 192.168.1.20
复制代码
修改脚本:
START_IP=${1:-1}
END_IP=${2:-254}
for i in $(seq "$START_IP" "$END_IP"); do
ip="$NETWORK.$i"
check_ip "$ip" &
done
复制代码
保存结果到文件
可以将扫描结果保存到文件中,便于后续分析:
LOG_FILE="scan_results.txt"
function log_success() {
echo -e "\033[32m[SUCCESS] $1\033[0m"
echo "[SUCCESS] $1" >> "$LOG_FILE"
}
function log_error() {
echo -e "\033[31m[ERROR] $1\033[0m"
echo "[ERROR] $1" >> "$LOG_FILE"
}
复制代码
使用 fping 替代 ping
fping 是一个更高效的网络扫描工具,支持批量扫描。如果系统安装了 fping,可以替换 ping 命令:
fping -c 1 -t "$TIMEOUT" "$ip" &> /dev/null
复制代码
总结
该脚本通过并行 ping 扫描 192.168.1 网段,快速检测哪些 IP 地址在线。通过调整并行数量和超时时间,可以平衡扫描速度和准确性。如果需要更高效的扫描,可以考虑使用 nmap 或 fping 等专业工具。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
糙昧邵
2025-6-9 14:29:44
关注
0
粉丝关注
13
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多