Files
smart-shutdown/README_Ubuntu.md
2025-10-03 17:29:58 +08:00

7.0 KiB
Raw Blame History

智能网络监控脚本 - Ubuntu版本

📁 项目结构

smart-shutdown/
├── smart_shutdown.sh           # 主监控脚本(用户模式)
├── deploy_system.sh            # 系统级部署脚本
├── uninstall_system.sh         # 系统级卸载脚本
├── manage.sh                   # 管理工具脚本
├── README.md                   # 本文件
└── logs/                       # 本地运行时的日志目录
    └── network_monitor_YYYYMMDD.log

🚀 快速开始

系统级部署(推荐)

# 1. 克隆或下载项目到本地
cd /path/to/smart-shutdown/

# 2. 以root权限运行部署脚本
sudo ./deploy_system.sh

部署效果:

  • 程序文件:/opt/smart-network-monitor/
  • 配置文件:/etc/smart-network-monitor/config.json
  • 日志文件:/var/log/smart-network-monitor/
  • systemd服务smart-network-monitor.service
  • 开机自启动,无需用户登录

用户级运行

# 以root权限直接运行需要用户登录
sudo ./smart_shutdown.sh

🎯 系统部署后的文件位置

程序文件位置

/opt/smart-network-monitor/
├── smart_shutdown_system.sh    # 系统优化版监控脚本
└── manage.sh                   # 管理工具脚本

配置文件位置

/etc/smart-network-monitor/
└── config.json                 # 配置文件

日志文件位置

/var/log/smart-network-monitor/
└── network_monitor_YYYYMMDD.log # 日志文件

🔧 管理命令

使用管理工具(推荐)

# 使用快捷命令(系统安装后可用)
smart-monitor

# 或者直接运行管理脚本
sudo /opt/smart-network-monitor/manage.sh

直接使用systemctl命令

查看服务状态

systemctl status smart-network-monitor

启动/停止/重启服务

sudo systemctl start smart-network-monitor
sudo systemctl stop smart-network-monitor
sudo systemctl restart smart-network-monitor

启用/禁用开机自启动

sudo systemctl enable smart-network-monitor
sudo systemctl disable smart-network-monitor

查看日志

查看今天的应用日志

cat /var/log/smart-network-monitor/network_monitor_$(date '+%Y%m%d').log

实时监控应用日志

tail -f /var/log/smart-network-monitor/network_monitor_$(date '+%Y%m%d').log

查看系统日志

# 查看最近的系统日志
journalctl -u smart-network-monitor -n 50

# 实时监控系统日志
journalctl -u smart-network-monitor -f

⚙️ 配置说明

系统部署后,配置文件位于:/etc/smart-network-monitor/config.json

默认配置

{
    "TargetIP": "192.168.3.3",
    "MonitorWindowSeconds": 180,
    "ShutdownCountdown": 60,
    "NormalPingInterval": 15
}

配置参数说明

  • TargetIP: 监控的目标IP地址
  • MonitorWindowSeconds: 监控窗口时长(秒),网络持续中断超过此时间将触发关机
  • ShutdownCountdown: 关机倒计时时长(秒)
  • NormalPingInterval: 正常监控时的ping间隔

修改配置

# 使用管理工具编辑(推荐)
smart-monitor

# 或直接编辑配置文件
sudo nano /etc/smart-network-monitor/config.json

# 修改配置后重启服务使配置生效
sudo systemctl restart smart-network-monitor

🗑️ 卸载

# 运行卸载脚本
sudo ./uninstall_system.sh

卸载脚本会询问是否删除配置文件和日志文件,您可以选择保留或删除。

📊 功能特性

  • 开机自启动,无需用户登录
  • 系统级权限运行
  • 智能日志管理(应用日志 + 系统日志)
  • JSON配置文件支持
  • 自动日志清理30天
  • 网络恢复自动取消关机
  • 完整的错误处理和信号处理
  • 彩色终端输出
  • 交互式管理工具

🔧 系统要求

必需软件包

  • ping (通常已预装)
  • systemctl (systemd)
  • journalctl (systemd)

推荐软件包

# 安装jq以获得更好的JSON配置支持
sudo apt-get update
sudo apt-get install jq

支持的系统

  • Ubuntu 16.04+ (带systemd)
  • Debian 8+ (带systemd)
  • 其他使用systemd的Linux发行版

🔐 安全说明

  • 脚本需要root权限以执行关机操作
  • systemd服务以root权限运行
  • 所有操作都会记录在应用日志和系统日志中
  • 支持通过systemd进行完整的服务管理和监控

📝 使用示例

1. 基本使用流程

# 1. 部署系统级服务
sudo ./deploy_system.sh

# 2. 检查服务状态
systemctl status smart-network-monitor

# 3. 查看实时日志
journalctl -u smart-network-monitor -f

# 4. 使用管理工具
smart-monitor

2. 自定义配置示例

# 编辑配置文件
sudo nano /etc/smart-network-monitor/config.json

# 修改为监控路由器
{
    "TargetIP": "192.168.1.1",
    "MonitorWindowSeconds": 300,
    "ShutdownCountdown": 120,
    "NormalPingInterval": 30
}

# 重启服务应用配置
sudo systemctl restart smart-network-monitor

3. 故障排除

# 查看服务详细状态
systemctl status smart-network-monitor -l

# 查看最近的错误日志
journalctl -u smart-network-monitor --since "1 hour ago"

# 测试网络连接
ping -c 4 192.168.3.3

# 手动运行脚本进行调试
sudo /opt/smart-network-monitor/smart_shutdown_system.sh

🚨 注意事项

  1. 关机权限脚本需要root权限才能执行关机操作
  2. 网络依赖确保目标IP地址可达且稳定响应ping
  3. 测试模式:默认脚本在关机时会输出模拟信息,取消注释 shutdown -h now 行以启用实际关机
  4. 备份重要数据:在启用实际关机功能前,请确保重要数据已备份
  5. 防火墙设置确保ICMP ping包不被防火墙阻挡

🔗 相关命令速查

# 服务管理
sudo systemctl start smart-network-monitor      # 启动
sudo systemctl stop smart-network-monitor       # 停止
sudo systemctl restart smart-network-monitor    # 重启
sudo systemctl status smart-network-monitor     # 状态
sudo systemctl enable smart-network-monitor     # 开机启动
sudo systemctl disable smart-network-monitor    # 禁用启动

# 日志查看
journalctl -u smart-network-monitor             # 所有日志
journalctl -u smart-network-monitor -f          # 实时日志
journalctl -u smart-network-monitor -n 50       # 最近50行
tail -f /var/log/smart-network-monitor/network_monitor_$(date '+%Y%m%d').log  # 应用日志

# 配置管理
sudo nano /etc/smart-network-monitor/config.json  # 编辑配置
cat /etc/smart-network-monitor/config.json        # 查看配置

# 管理工具
smart-monitor                                    # 交互式管理

📞 技术支持

如果您在使用过程中遇到问题,请:

  1. 检查系统日志:journalctl -u smart-network-monitor -n 100
  2. 验证网络连接:ping 目标IP
  3. 检查配置文件格式:jq . /etc/smart-network-monitor/config.json
  4. 查看服务状态:systemctl status smart-network-monitor -l

享受智能网络监控带来的便利! 🎉