[TelegramBoT][动态IP监控]Node.js 监测本机的 IP 变动

技术交流 无标签
0 89
xiaofei
xiaofei 普通会员 2025-04-18 21:03:16
用户等级:2级

你可以创建一个简单的 Node.js 项目,用于监测本机的 IP 变动,并将变动推送到 Telegram Bot。这个项目不依赖 DDNS-go,而是直接通过脚本获取本机的 IP 并进行监控。下面是如何实现这个功能的详细步骤:

 创建 IP监控与推送 项目

 ️ 步骤 1:初始化一个新的 Node.js 项目

mkdir ip-monitor && cd ip-monitor

npm init -y

这将创建一个新的 package.json 文件。

  步骤 2:安装必要的依赖

npm install axios ip

· axios 用于与 Telegram API 进行 HTTP 通信,发送消息。

· ip 用于获取本机的公共 IP。

 ️ 步骤 3:创建 index.js 脚本

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。

 ️ 步骤 4:运行服务

保存文件后,运行以下命令启动服务:

node index.js

此时服务会每隔 60 秒检查一次 IP 是否变动。如果变动,会将新的 IP 通过 Telegram 发送到你的聊天窗口。

  步骤 5:添加到 PM2 中(可选)

为了确保脚本始终在后台运行,可以使用 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 的方式,可以轻松扩展到多种使用场景。

楼主签名:
回帖
回复列表