290 lines
7.0 KiB
Markdown
290 lines
7.0 KiB
Markdown
# 智能网络监控脚本 - Ubuntu版本
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
smart-shutdown/
|
||
├── smart_shutdown.sh # 主监控脚本(用户模式)
|
||
├── deploy_system.sh # 系统级部署脚本
|
||
├── uninstall_system.sh # 系统级卸载脚本
|
||
├── manage.sh # 管理工具脚本
|
||
├── README.md # 本文件
|
||
└── logs/ # 本地运行时的日志目录
|
||
└── network_monitor_YYYYMMDD.log
|
||
```
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 系统级部署(推荐)
|
||
|
||
```bash
|
||
# 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`
|
||
- 开机自启动,无需用户登录
|
||
|
||
### 用户级运行
|
||
|
||
```bash
|
||
# 以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 # 日志文件
|
||
```
|
||
|
||
## 🔧 管理命令
|
||
|
||
### 使用管理工具(推荐)
|
||
```bash
|
||
# 使用快捷命令(系统安装后可用)
|
||
smart-monitor
|
||
|
||
# 或者直接运行管理脚本
|
||
sudo /opt/smart-network-monitor/manage.sh
|
||
```
|
||
|
||
### 直接使用systemctl命令
|
||
|
||
#### 查看服务状态
|
||
```bash
|
||
systemctl status smart-network-monitor
|
||
```
|
||
|
||
#### 启动/停止/重启服务
|
||
```bash
|
||
sudo systemctl start smart-network-monitor
|
||
sudo systemctl stop smart-network-monitor
|
||
sudo systemctl restart smart-network-monitor
|
||
```
|
||
|
||
#### 启用/禁用开机自启动
|
||
```bash
|
||
sudo systemctl enable smart-network-monitor
|
||
sudo systemctl disable smart-network-monitor
|
||
```
|
||
|
||
### 查看日志
|
||
|
||
#### 查看今天的应用日志
|
||
```bash
|
||
cat /var/log/smart-network-monitor/network_monitor_$(date '+%Y%m%d').log
|
||
```
|
||
|
||
#### 实时监控应用日志
|
||
```bash
|
||
tail -f /var/log/smart-network-monitor/network_monitor_$(date '+%Y%m%d').log
|
||
```
|
||
|
||
#### 查看系统日志
|
||
```bash
|
||
# 查看最近的系统日志
|
||
journalctl -u smart-network-monitor -n 50
|
||
|
||
# 实时监控系统日志
|
||
journalctl -u smart-network-monitor -f
|
||
```
|
||
|
||
## ⚙️ 配置说明
|
||
|
||
系统部署后,配置文件位于:`/etc/smart-network-monitor/config.json`
|
||
|
||
### 默认配置
|
||
```json
|
||
{
|
||
"TargetIP": "192.168.3.3",
|
||
"MonitorWindowSeconds": 180,
|
||
"ShutdownCountdown": 60,
|
||
"NormalPingInterval": 15
|
||
}
|
||
```
|
||
|
||
### 配置参数说明
|
||
- `TargetIP`: 监控的目标IP地址
|
||
- `MonitorWindowSeconds`: 监控窗口时长(秒),网络持续中断超过此时间将触发关机
|
||
- `ShutdownCountdown`: 关机倒计时时长(秒)
|
||
- `NormalPingInterval`: 正常监控时的ping间隔(秒)
|
||
|
||
### 修改配置
|
||
```bash
|
||
# 使用管理工具编辑(推荐)
|
||
smart-monitor
|
||
|
||
# 或直接编辑配置文件
|
||
sudo nano /etc/smart-network-monitor/config.json
|
||
|
||
# 修改配置后重启服务使配置生效
|
||
sudo systemctl restart smart-network-monitor
|
||
```
|
||
|
||
## 🗑️ 卸载
|
||
|
||
```bash
|
||
# 运行卸载脚本
|
||
sudo ./uninstall_system.sh
|
||
```
|
||
|
||
卸载脚本会询问是否删除配置文件和日志文件,您可以选择保留或删除。
|
||
|
||
## 📊 功能特性
|
||
|
||
- ✅ 开机自启动,无需用户登录
|
||
- ✅ 系统级权限运行
|
||
- ✅ 智能日志管理(应用日志 + 系统日志)
|
||
- ✅ JSON配置文件支持
|
||
- ✅ 自动日志清理(30天)
|
||
- ✅ 网络恢复自动取消关机
|
||
- ✅ 完整的错误处理和信号处理
|
||
- ✅ 彩色终端输出
|
||
- ✅ 交互式管理工具
|
||
|
||
## 🔧 系统要求
|
||
|
||
### 必需软件包
|
||
- `ping` (通常已预装)
|
||
- `systemctl` (systemd)
|
||
- `journalctl` (systemd)
|
||
|
||
### 推荐软件包
|
||
```bash
|
||
# 安装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. 基本使用流程
|
||
|
||
```bash
|
||
# 1. 部署系统级服务
|
||
sudo ./deploy_system.sh
|
||
|
||
# 2. 检查服务状态
|
||
systemctl status smart-network-monitor
|
||
|
||
# 3. 查看实时日志
|
||
journalctl -u smart-network-monitor -f
|
||
|
||
# 4. 使用管理工具
|
||
smart-monitor
|
||
```
|
||
|
||
### 2. 自定义配置示例
|
||
|
||
```bash
|
||
# 编辑配置文件
|
||
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. 故障排除
|
||
|
||
```bash
|
||
# 查看服务详细状态
|
||
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包不被防火墙阻挡
|
||
|
||
## 🔗 相关命令速查
|
||
|
||
```bash
|
||
# 服务管理
|
||
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`
|
||
|
||
---
|
||
|
||
**享受智能网络监控带来的便利!** 🎉 |