Skip to content

Z1rconium/Auto-DynamicIP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IP Monitor Script

这是一个用于监控公网 IPv4 地址变化的 Bash 脚本。当检测到 IP 发生变化时,它会自动运行 IP 质量检测(使用 IP.Check.Place 脚本),生成可视化的 PNG 报告,并通过 Telegram Bot 发送通知。

功能特点

  • 多源 IP 检测:轮询多个可靠的 API(如 ip.sb, icanhazip.com 等)获取当前公网 IP,确保稳定性。
  • IP 变更监控:自动记录上一次的 IP,仅在 IP 发生变化时触发后续操作。
  • 自动质量检测:集成 IP.Check.Place 脚本,自动进行 IP 质量评估(包含 -E 增强模式)。
  • 生成图片报告:利用 ansilove 将终端的 ANSI 输出转换为高质量的 PNG 图片。
  • Telegram 通知:将变更详情(新旧 IP、时间)及生成的报告图片发送到指定的 Telegram Chat。
  • 日志记录:详细记录检测过程、错误信息及发送状态到日志文件。
  • 自动清理:发送成功后自动清理生成的临时图片。

依赖要求

在使用此脚本之前,请确保系统已安装以下依赖:

  • curl (用于网络请求)
  • bash (脚本解释器)
  • ansilove (核心依赖:用于将 ANSI 文本转换为 PNG 图片)
  • grep, sed, awk (标准文本处理工具)

安装 ansilove 示例

Ubuntu/Debian:

sudo apt update
sudo apt install ansilove

CentOS/RHEL:

sudo yum install ansilove

macOS:

brew install ansilove

安装与配置

  1. 下载脚本monitor_ip.sh 下载到你的服务器或本地机器。

  2. 赋予执行权限

    chmod +x monitor_ip.sh
  3. 配置脚本 打开 monitor_ip.sh 文件,修改顶部的配置区域:

    # Telegram Bot 配置
    TG_BOT_TOKEN="你的_BOT_TOKEN"    # 从 @BotFather 获取
    TG_CHAT_ID="你的_CHAT_ID"        # 接收消息的用户 ID 或群组 ID
    
    # 文件路径配置
    IP_LOG_FILE="/root/.current_ip_log"  # 用于记录当前 IP 的文件路径
    IMAGE_DIR="/root"                    # 图片生成的目录
    LOG_FILE="/var/log/ip_monitor.log"   # 日志文件路径

    注意:请确保脚本对配置的目录(如 /root/var/log)拥有写入权限。如果是普通用户运行,建议修改为用户目录下的路径(例如 ~/ip_monitor.log)。

    # 配置Telegram发送信息的细节
    RESPONSE=$(curl -s -X POST "https://api.telegram.org/bot$TG_BOT_TOKEN/sendPhoto" \
            -F chat_id="$TG_CHAT_ID" \
            -F caption="🚨 **XXXX 家宽 IP 地址已变更**\n新 IP: \`$CURRENT_IP\`\n旧 IP: \`$LAST_IP\`\n时间: $(date '+%Y-%m-%d %H:%M:%S')\n参数: \`-4 -E\`" \
            -F parse_mode="Markdown" \
            -F photo="@$LATEST_PNG")

使用方法

手动运行

直接运行脚本进行测试:

./monitor_ip.sh

如果是首次运行(或没有历史记录),它会记录当前 IP。如果此时再次运行且 IP 未变,脚本将静默退出。

定时任务 (Cron)

建议将脚本加入 crontab 实现自动化监控。例如每 5 分钟检测一次:

  1. 编辑 crontab:

    crontab -e
  2. 添加如下行:

    */5 * * * * /path/to/monitor_ip.sh

日志查看

脚本的运行日志保存在配置的 LOG_FILE 中(默认 /var/log/ip_monitor.log)。可以通过以下命令查看:

tail -f /var/log/ip_monitor.log

工作流程

  1. 脚本启动,尝试从 API 获取当前公网 IP。
  2. 读取本地缓存的旧 IP(IP_LOG_FILE)。
  3. 对比新旧 IP:
    • 如有变化
      1. 更新本地缓存。
      2. 调用远程脚本 bash <(curl -sL IP.Check.Place) -4 -E 进行检测。
      3. 捕获输出并使用 ansilove 生成 PNG 图片。
      4. 发送 Telegram 通知(包含新旧 IP 对比及图片)。
      5. 清理临时文件。
    • 如无变化
      1. 退出(不进行任何操作)。

许可证

本项目采用 GNU Affero General Public License v3.0 协议开源。

About

🚀 Auto-DynamicIP 是一个轻量级的 Bash 自动化脚本,专为拥有动态公网 IP 的用户设计。它不仅能通过轮询多个 API 实时监控 IP 变更,还能在变化发生时自动触发深度 IP 质量检测,并将生成的精美图片报告即时推送到您的手机。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors

Languages