网络监控项目

一个功能完整的网络监控解决方案,持续监控指定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地址验证
  • 主机名解析
  • 端口检测
  • 数据格式化

注意事项

  1. 谨慎使用: 此脚本会在网络断开后执行自动关机,建议先在测试环境验证。
  2. 管理员权限: Windows上需要管理员权限执行关机命令。
  3. 停止监控: 按 Ctrl+C 可以安全停止监控程序。
  4. 目标IP选择: 建议使用可靠的公网IP(如8.8.8.8)或内网网关。
  5. 日志目录: 日志文件保存在 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

贡献

欢迎提交问题和拉取请求!

S
Description
No description provided
Readme MIT 70 KiB
Languages
Python 99.8%
PowerShell 0.2%