监控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
