Skip to content

hint-lab/ip-monitor

Repository files navigation

IP监控脚本使用说明

⚠️ 重要提示

在使用前,请务必修改以下文件中的用户名和路径:

  1. ip_monitor.service - 将 your-user-name 替换为你的实际用户名

    • User=your-user-nameUser=你的用户名
    • /home/your-user-name/ip-monitor/home/你的用户名/ip-monitor
  2. ip_monitor.timer - 如果路径不同,也需要相应修改

  3. crontab 配置 - 如果使用 crontab 方式,请修改脚本路径

功能

  • 每20分钟自动检测公网IP变化
  • IP变化时立即发送飞书通知
  • 每天晚上10点自动发送服务器状态报告(IP地址和服务器状态)
  • 自动记录IP变化日志
  • 支持飞书Webhook机器人通知

文件说明

  • ip_monitor.sh - 主监控脚本(支持IP检查和每日报告)
  • install.sh - 一键安装脚本(推荐使用)
  • ip_monitor.service.example - IP监控服务配置示例
  • ip_monitor.timer.example - IP监控定时器配置示例
  • ip_monitor_daily.service.example - 每日报告服务配置示例
  • ip_monitor_daily.timer.example - 每日报告定时器配置示例
  • .ip_monitor_config - 配置文件(包含飞书Webhook URL,安装时自动生成)
  • .current_ip - 当前IP记录文件(自动生成)
  • .last_report_date - 最后报告日期记录(自动生成)
  • ip_monitor.log - 监控日志文件(自动生成)

快速安装(推荐)

使用一键安装脚本,会自动配置所有服务:

bash install.sh

安装脚本会:

  1. 询问用户名和安装路径
  2. 配置飞书Webhook URL
  3. 自动创建配置文件
  4. 安装并启动所有systemd服务

手动安装步骤

方法1: 使用 systemd timer(推荐)

⚠️ 重要:在安装前,请先配置飞书Webhook并编辑配置文件!

# 0. 创建配置文件(包含飞书Webhook URL)
cat > .ip_monitor_config <<EOF
FEISHU_WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/your-webhook-id"
EOF
chmod 600 .ip_monitor_config

# 1. 从example文件创建实际配置文件,修改用户名和路径
sed "s|your-user-name|你的用户名|g" ip_monitor.service.example | \
    sed "s|/home/your-user-name/ip-monitor|$(pwd)|g" > ip_monitor.service

cp ip_monitor.timer.example ip_monitor.timer

sed "s|your-user-name|你的用户名|g" ip_monitor_daily.service.example | \
    sed "s|/home/your-user-name/ip-monitor|$(pwd)|g" > ip_monitor_daily.service

cp ip_monitor_daily.timer.example ip_monitor_daily.timer

# 2. 复制服务文件到系统目录
sudo cp ip_monitor.service /etc/systemd/system/
sudo cp ip_monitor.timer /etc/systemd/system/
sudo cp ip_monitor_daily.service /etc/systemd/system/
sudo cp ip_monitor_daily.timer /etc/systemd/system/

# 3. 重新加载systemd配置
sudo systemctl daemon-reload

# 4. 启用并启动定时器
sudo systemctl enable ip_monitor.timer
sudo systemctl enable ip_monitor_daily.timer
sudo systemctl start ip_monitor.timer
sudo systemctl start ip_monitor_daily.timer

# 5. 检查状态
sudo systemctl status ip_monitor.timer
sudo systemctl status ip_monitor_daily.timer
sudo systemctl list-timers | grep ip_monitor

方法2: 使用 crontab

⚠️ 重要:请将 /path/to/ip-monitor 替换为实际的脚本路径!

# 编辑crontab
crontab -e

# 添加以下行(每20分钟执行一次,请修改为实际路径)
# 例如:*/20 * * * * /home/your-username/ip-monitor/ip_monitor.sh
*/20 * * * * /path/to/ip-monitor/ip_monitor.sh

使用方法

查看日志

# 查看监控日志
tail -f ip_monitor.log

# 查看最近的日志
tail -20 ip_monitor.log

手动运行

# 正常IP检查
bash ip_monitor.sh

# 发送测试消息(验证Webhook配置)
bash ip_monitor.sh --test
#
bash ip_monitor.sh -t

# 执行每日报告
bash ip_monitor.sh --daily-report

# 查看帮助
bash ip_monitor.sh --help

查看当前记录的IP

cat .current_ip

查看定时器状态(systemd方式)

# 查看定时器状态
sudo systemctl status ip_monitor.timer

# 查看下次执行时间
sudo systemctl list-timers | grep ip_monitor

# 查看服务日志
sudo journalctl -u ip_monitor.service -f

停止监控

systemd方式

sudo systemctl stop ip_monitor.timer
sudo systemctl disable ip_monitor.timer

crontab方式

crontab -e
# 删除或注释掉相关行

测试Webhook配置

安装完成后,建议先测试Webhook是否配置正确:

# 发送测试消息
bash ip_monitor.sh --test
#
bash ip_monitor.sh -t

如果配置正确,你应该能在飞书群聊中收到一条测试消息,包含:

  • 当前公网IP
  • 服务器状态(CPU、内存、磁盘、负载)
  • 测试时间

自定义通知方式

如果需要添加邮件、webhook等通知方式,可以编辑 ip_monitor.sh 文件中的 send_feishu_message 函数,或添加新的通知函数。

# 示例:发送邮件(需要配置mail命令)
echo "IP变化: $previous_ip -> $current_ip" | mail -s "IP变化通知" your@email.com

# 示例:发送webhook
curl -X POST https://your-webhook-url.com \
  -H "Content-Type: application/json" \
  -d "{\"ip\": \"$current_ip\", \"previous_ip\": \"$previous_ip\"}"

# 示例:桌面通知(需要安装notify-send)
notify-send "IP变化通知" "IP已从 $previous_ip 变更为 $current_ip"

注意事项

  • 脚本需要网络连接才能获取IP
  • 如果无法获取IP,会记录警告但不会中断运行
  • 每天只报告一次IP变化,即使一天内多次变化
  • 日志文件会持续增长,建议定期清理或配置日志轮转

About

服务器IP监控脚本使用说明

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages