本文档介绍如何在服务器上自动检测 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 * * * *
来增加或减少检查间隔。