论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
主机系统
›
linux
›
shell脚本快速检查192.168.1网段ip是否在用
shell脚本快速检查192.168.1网段ip是否在用
冬雨财经
论坛元老
|
2025-1-12 14:53:27
|
显示全部楼层
|
阅读模式
楼主
主题
1666
|
帖子
1666
|
积分
4998
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
检查 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 等专业工具。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
冬雨财经
论坛元老
这个人很懒什么都没写!
楼主热帖
信息与网络安全期末复习(完整版) ...
ts保姆级教程,别再说你不会ts了 ...
iOS全埋点解决方案-手势采集 ...
如何通过JDBC访问MySQL数据库?手把手 ...
Elasticsearch学习系列五(零停机索引 ...
Pod概述
Fastjson反序列化
Linux安装PHP8 新版笔记
Log4j2 CVE-2021-44288 代码审计(底层 ...
《ABP Framework 极速开发》教程首发 ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
前端开发
快速回复
返回顶部
返回列表