217cc204cb040c20081da594c72ff7cea4c04c54
网络监控项目
一个功能完整的网络监控解决方案,持续监控指定IP地址的连接状态,当检测到连续无法连接超过设定阈值时自动执行关机操作。
功能特性
核心功能
- ✅ 持续监控指定IP地址的网络连接状态
- ✅ 可配置的延迟阈值和ping间隔
- ✅ 支持Windows、Linux和macOS系统
- ✅ 自动关机功能(网络断开后)
- ✅ 实时显示连接状态和日志
高级功能
- 📝 详细的日志记录系统
- 🔔 多种通知方式(控制台、桌面、邮件)
- 📊 会话统计和历史记录
- 🛠️ 完整的工具函数库
- 📦 模块化的项目结构
项目结构
network-monitor/
├── network_monitor.py # 核心监控器类
├── advanced_monitor.py # 高级监控器(带日志和通知)
├── logger.py # 日志记录模块
├── notifier.py # 通知模块
├── utils.py # 工具函数模块
├── config.py # 配置文件
├── setup.py # 项目初始化脚本
├── run_monitor.bat # Windows启动脚本
├── run_monitor.sh # Linux/Mac启动脚本
├── requirements.txt # Python依赖
├── .gitignore # Git忽略文件
└── README.md # 项目文档
快速开始
1. 环境要求
- Python 3.6 或更高版本
- 无需额外安装依赖(仅使用标准库)
- 可选:安装桌面通知库(见 requirements.txt)
2. 初始化项目
# 运行初始化脚本
python setup.py
3. 运行监控器
Windows
# 使用启动脚本(推荐)
run_monitor.bat
# 或直接运行
python network_monitor.py
Linux/Mac
# 添加执行权限
chmod +x run_monitor.sh
# 使用启动脚本(推荐)
./run_monitor.sh
# 或直接运行
python3 network_monitor.py
4. 使用高级监控模式
# 基础模式
python network_monitor.py
# 高级模式(带日志和通知)
python advanced_monitor.py
使用方法
命令行参数
python network_monitor.py [IP地址] [延迟阈值] [Ping间隔]
参数说明:
IP地址: 要监控的IP地址(默认: 8.8.8.8)延迟阈值: 连续断开多少秒后关机(默认: 30)Ping间隔: 每隔多少秒执行一次ping(默认: 5)
示例:
# 使用默认配置
python network_monitor.py
# 监控内网网关,60秒后关机,每10秒ping一次
python network_monitor.py 192.168.1.1 60 10
# 高级模式
python advanced_monitor.py 192.168.1.1 45 5
修改配置
编辑 config.py 文件:
# 目标IP地址
TARGET_IP = "8.8.8.8"
# 延迟阈值(秒)
DELAY_THRESHOLD = 30.0
# Ping检测间隔(秒)
PING_INTERVAL = 5.0
输出示例
[2026-03-05 10:30:00] 网络监控器已启动
[2026-03-05 10:30:00] 目标IP: 8.8.8.8
[2026-03-05 10:30:00] 延迟阈值: 30.0秒
[2026-03-05 10:30:00] Ping间隔: 5.0秒
[2026-03-05 10:30:00] 操作系统: Windows
------------------------------------------------------------
[2026-03-05 10:30:00] 开始监控网络连接...
[2026-03-05 10:30:00] 每 5.0 秒执行一次ping操作
------------------------------------------------------------
[2026-03-05 10:30:00] Ping #1 执行完成 → ✓ 连接正常
[2026-03-05 10:30:00] 等待 5.0 秒后执行下一次ping...
[2026-03-05 10:30:05] Ping #2 执行完成 → ✓ 连接正常
模块说明
network_monitor.py
核心监控器类,提供基本的网络监控功能。
NetworkMonitor: 主监控器类ping_host(): 执行ping操作monitor(): 启动监控循环shutdown_system(): 执行系统关机
advanced_monitor.py
高级监控器,集成日志和通知功能。
AdvancedNetworkMonitor: 继承自NetworkMonitor- 自动记录所有ping操作
- 发送连接状态通知
- 生成详细的统计报告
logger.py
日志记录模块,提供完整的日志功能。
Logger: 日志记录器类- 支持多种事件类型记录
- 自动保存历史日志
- 生成统计报告
notifier.py
通知模块,支持多种通知方式。
NotificationManager: 通知管理器ConsoleNotifier: 控制台通知DesktopNotifier: 桌面通知(需安装依赖)EmailNotifier: 邮件通知(需配置SMTP)
utils.py
工具函数模块,提供通用工具函数。
- IP地址验证
- 主机名解析
- 端口检测
- 数据格式化
注意事项
- 谨慎使用: 此脚本会在网络断开后执行自动关机,建议先在测试环境验证。
- 管理员权限: Windows上需要管理员权限执行关机命令。
- 停止监控: 按
Ctrl+C可以安全停止监控程序。 - 目标IP选择: 建议使用可靠的公网IP(如8.8.8.8)或内网网关。
- 日志目录: 日志文件保存在
logs/目录下,会自动清理旧日志。
扩展功能
启用桌面通知
# Windows
pip install win10toast
# Linux
pip install notify2
# macOS
pip install pync
然后在代码中设置 enable_desktop=True。
配置邮件通知
from notifier import EmailNotifier
email_notifier = EmailNotifier(
smtp_server="smtp.example.com",
smtp_port=587,
username="your@email.com",
password="your_password",
from_email="from@email.com",
to_email="to@email.com"
)
故障排除
问题: 无法执行关机命令
- Windows: 以管理员身份运行
- Linux/Mac: 检查用户权限
问题: ping失败
- 检查IP地址是否正确
- 检查网络连接
- 检查防火墙设置
问题: 依赖安装失败
- 使用
pip install -r requirements.txt - 确保使用Python 3.6+
许可证
MIT License
贡献
欢迎提交问题和拉取请求!
Languages
Python
99.8%
PowerShell
0.2%