你可以创建一个简单的 Node.js 项目,用于监测本机的 IP 变动,并将变动推送到 Telegram Bot。这个项目不依赖 DDNS-go,而是直接通过脚本获取本机的 IP 并进行监控。下面是如何实现这个功能的详细步骤:
mkdir ip-monitor && cd ip-monitor
npm init -y
这将创建一个新的 package.json 文件。
npm install axios ip
· axios 用于与 Telegram API 进行 HTTP 通信,发送消息。
· ip 用于获取本机的公共 IP。
nano index.js
粘贴以下内容:
const axios = require('axios');
const ip = require('ip');
const { exec } = require('child_process');
// 填入你的 Telegram Bot Token 和 Chat ID
const BOT_TOKEN = 'YOUR_BOT_TOKEN';
const CHAT_ID = 'YOUR_CHAT_ID';
// 记录上次的 IP 地址
let lastIP = '';
function sendTelegramMessage(message) {
const url = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage?chat_id=${CHAT_ID}&text=${encodeURIComponent(message)}`;
axios.get(url)
.then(response => {
console.log('Telegram message sent:', response.data);
})
.catch(error => {
console.error('Error sending message:', error);
});
}
function getCurrentIP() {
return new Promise((resolve, reject) => {
exec('curl -s ifconfig.me', (err, stdout, stderr) => {
if (err || stderr) {
reject('Failed to get IP');
} else {
resolve(stdout.trim());
}
});
});
}
async function checkIPChange() {
try {
const currentIP = await getCurrentIP();
if (currentIP !== lastIP) {
console.log(`IP changed: ${lastIP} -> ${currentIP}`);
sendTelegramMessage(`�� IP 地址变更通知: \n新的 IP 地址是: ${currentIP}`);
lastIP = currentIP;
} else {
console.log('IP 未变动');
}
} catch (error) {
console.error('Failed to check IP:', error);
}
}
// 每 60 秒检查一次
setInterval(checkIPChange, 60000);
// 初始化时检查 IP
checkIPChange();
· sendTelegramMessage 函数:发送 Telegram 消息到指定的 Chat ID。
· getCurrentIP 函数:通过 curl 命令从 ifconfig.me 获取本机的公共 IP。
· checkIPChange 函数:每分钟检查一次当前的公共 IP 是否发生变化。如果变化,则将变动通知发送到 Telegram。
保存文件后,运行以下命令启动服务:
node index.js
此时服务会每隔 60 秒检查一次 IP 是否变动。如果变动,会将新的 IP 通过 Telegram 发送到你的聊天窗口。
为了确保脚本始终在后台运行,可以使用 PM2 进行管理:
npm install -g pm2
pm2 start index.js --name ip-monitor
pm2 save
pm2 startup
1.
更频繁的检查:如果你希望脚本更频繁地检查,可以将 setInterval 的时间减少到比如 30000 毫秒(每 30 秒)。
2.
3.
支持多种 IP 获取方式:你可以修改 getCurrentIP 函数,使用多个来源获取 IP(比如 https://api.ipify.org)。
4.
5.
定制化消息内容:在 sendTelegramMessage 中,你可以自定义 Telegram 消息内容格式或添加更多细节(如主机名、地理位置等)。
6.
你现在有了一个简单的 Node.js 项目,能够 监控本机 IP 地址的变化,并自动推送到 Telegram。该项目不依赖 DDNS-go,通过自定义获取 IP 的方式,可以轻松扩展到多种使用场景。