本文档介绍如何在服务器上自动检测 IP 是否被封锁,并通过脚本更换 IP,同时发送通知到 Telegram。

创建脚本文件并赋予执行权限

touch /root/changeip.sh
chmod +x /root/changeip.sh

编辑脚本

vim /root/changeip.sh

粘贴前使用 esc → :set paste 开启粘贴模式。

脚本内容示例

请替换以下字段:

  • <替换为Telegram机器人HTTP API>

  • <替换为你的chat_id向@userinfobot发送/start获取>

  • <替换为你的UUID>

  • <替换为你的内网IP>

#!/bin/bash

# 执行 ping 命令并检查结果
if ping -c 5 -W 2 -i 0.2 baidu.com | grep "100% packet loss" > /dev/null
then
    echo "当前IP已经被墙,正在更换IP..."
    
    # Telegram 机器人报告 IP 被封锁
    curl -s "https://api.telegram.org/bot<替换为Telegram机器人HTTP API>/sendMessage" \
        -d "chat_id=<替换为你的chat_id向@userinfobot发送/start获取>" \
        -d "text=当前IP已经被墙,正在自动更换IP..."
    
    # 记录更换前的时间和 IP
    current_time=$(date '+%Y-%m-%d %H:%M:%S')
    ip_sb_result=$(curl -s ip.sb)
    echo "[$current_time] IP 更换前为: $ip_sb_result" >> /root/changeip.log
    
    # 执行更换 IP 的命令
    curl "https://api.renet.tw/changer.php?uuid=<替换为你的UUID>&ip=<替换为你的内网IP>"
    sleep 10
    
    # 记录更换后的 IP
    ip_sb_result=$(curl -s ip.sb)
    echo "[$current_time] IP 更换成功,当前为: $ip_sb_result" >> /root/changeip.log
    
    # Telegram 机器人发送新的 IP
    curl -s "https://api.telegram.org/bot<替换为Telegram机器人HTTP API>/sendMessage" \
        -d "chat_id=<替换为你的chat_id向@userinfobot发送/start获取>" \
        -d "text=新的IP是: $ip_sb_result"
    
    echo "IP 已经更换完成。"
else
    echo "当前 IP 未被封锁"
fi

保存脚本后使用 esc → :wq! 退出 vim。

编辑 crontab

crontab -e

添加定时任务

*/2 * * * * /bin/bash /root/changeip.sh

说明

  • 上述设置会每 2 分钟检查一次 IP 是否被屏蔽。

  • 可根据需求调整 */2 * * * * 来增加或减少检查间隔。

Je li Vam ovaj odgovor pomogao? 1 Korisnici koji smatraju članak korisnim (1 Glasovi)