监控VPS的IP变化并发送到telegram
如果你想知道VPS的IP变化以后,自动发送变化的IP到telegram的机器人,那么这个脚本就很适合。
安装Python3和pip3
apt install python3-pip -y
创建脚本ip_monitor.py,把下面的代码完整复制到编辑器,然后Ctrl + X,按Y,最后按Enter保存文件
nano ip_monitor.py
import requests import time import os from datetime import datetime # Telegram 配置 TELEGRAM_BOT_TOKEN = '75687999999:AAFz7WNMB78-_5_f6tRs99999ktQaasX64Y' # 替换为你的 bot token CHAT_ID = '1208199999' # 替换为你的 chat ID def get_current_ip(): """获取当前公网 IP""" try: # 使用多个 IP 查询服务以增加可靠性 services = [ 'https://api.ipify.org?format=json', 'https://api.ip.sb/ip', 'https://ifconfig.me/ip' ] for service in services: try: response = requests.get(service, timeout=10) if response.status_code == 200: if 'json' in service: return response.json()['ip'] return response.text.strip() except: continue raise Exception("无法获取 IP 地址") except Exception as e: print(f"获取 IP 出错: {str(e)}") return None def send_telegram_message(message): """发送消息到 Telegram""" try: url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" data = { "chat_id": CHAT_ID, "text": message, "parse_mode": "HTML" } response = requests.post(url, data=data) if response.status_code != 200: raise Exception(f"发送失败: {response.text}") except Exception as e: print(f"发送消息出错: {str(e)}") def main(): print("开始监控 IP 变化...") last_ip = None # 创建存储最后一个 IP 的文件 ip_file = "last_ip.txt" # 如果文件存在,读取上次的 IP if os.path.exists(ip_file): with open(ip_file, 'r') as f: last_ip = f.read().strip() while True: try: current_ip = get_current_ip() if current_ip and current_ip != last_ip: # IP 发生变化 timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") message = f"📢 Tim叔叔的TW VPS的IP 地址已更新\n\n" \ f"⏰ 时间: {timestamp}\n" \ f"🔄 新 IP: <code>{current_ip}</code>\n" if last_ip: message += f"📍 旧 IP: <code>{last_ip}</code>" # 发送到 Telegram send_telegram_message(message) # 更新最后的 IP last_ip = current_ip # 保存到文件 with open(ip_file, 'w') as f: f.write(current_ip) print(f"IP 已更新: {current_ip}") # 等待一段时间再检查 time.sleep(60) # 每分钟检查一次 except Exception as e: print(f"发生错误: {str(e)}") time.sleep(60) # 发生错误时等待一分钟后重试 if __name__ == "__main__": main()
安装依赖
pip3 install requests
给脚本添加执行权限
chmod +x ip_monitor.py
运行脚本
python3 ip_monitor.py
为了让脚本在后台持续运行,我们可以使用 screen
或 systemd
。我建议使用 systemd
,这样更可靠
nano /etc/systemd/system/ip-monitor.service
[Unit] Description=IP Monitor Service After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/python3 /root/ip_monitor.py Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
启动服务
# 重新加载 systemd sudo systemctl daemon-reload # 启动服务 sudo systemctl start ip-monitor # 设置开机自启 sudo systemctl enable ip-monitor
检查服务状态
systemctl status ip-monitor
查看日志
journalctl -u ip-monitor -f