nodejs批量ping

在一批大量的ip地址之中查找哪个地址是有效的并且应答的时间最快

nodejs中可以使用net-ping模块

ip地址所在的json文件格式如下,只粘贴部分信息,文件名:gui-config.json

{
    "configs" : [
        {
            "remarks" : "德国",
            "server" : "172.104.155.76",
            "method" : "rc4-md5",
            "obfs" : "plain",
            "obfsparam" : "",
            "remarks_base64" : "5b635Zu9",
            "tcp_over_udp" : false,
            "udp_over_tcp" : false,
            "protocol" : "origin",
            "obfs_udp" : false,
            "enable" : true,
            "id" : "12-AC-19-DF-D8-3D-2F-F3-8C-52-34-C3-8B-12-B6-F5"
        },
        {
            "remarks" : "俄罗斯",
            "server" : "92.38.129.13",
            "method" : "rc4-md5",
            "obfs" : "plain",
            "obfsparam" : "",
            "remarks_base64" : "5L-E572X5pav",
            "tcp_over_udp" : false,
            "udp_over_tcp" : false,
            "protocol" : "origin",
            "obfs_udp" : false,
            "enable" : true,
            "id" : "0F-4B-E0-06-6E-69-75-D1-E4-68-F2-CD-A2-B3-04-06"
        }
    ],
}

nodejs代码

const ping = require ("net-ping");
const session = ping.createSession();
const fs = require('fs');

function pingHost(host) {
  session.pingHost(host, (error, target, sent, rcvd) => {
    if (error) {
      console.log(`${target} failed:${error.toString()}`);
    } else {
      const spent = rcvd.getTime() - sent.getTime();
      console.log(`${target} ok, spent: ${spent}ms`);
    }
  })
}

const guiconfig = 'C:/Users/tujiawei/Downloads/pgfastss/gui-config.json';
const content = fs.readFileSync(guiconfig, 'utf8');
const contentObj = JSON.parse(content);
contentObj.configs.forEach((item) => {
  pingHost(item.server);  
})

需要注意的是,我的机器运行这个js文件在windows下需要管理员权限
所以,用管理员权限运行cmd(打开命令行提示工具),cd到指定目录执行

node ping.js

结果如下:

60.248.112.164 ok, spent: 44ms
175.98.163.226 ok, spent: 63ms
175.98.163.216 ok, spent: 67ms
92.38.129.13 ok, spent: 72ms
47.88.224.254 ok, spent: 75ms
103.76.104.227 ok, spent: 165ms
45.58.54.190 ok, spent: 166ms
172.104.155.76 failed:RequestTimedOutError: Request timed out
92.38.128.22 failed:RequestTimedOutError: Request timed out
144.217.85.91 failed:RequestTimedOutError: Request timed out
103.95.207.238 failed:RequestTimedOutError: Request timed out
172.104.93.179 failed:RequestTimedOutError: Request timed out
172.104.124.59 failed:RequestTimedOutError: Request timed out
172.104.109.25 failed:RequestTimedOutError: Request timed out
172.104.98.116 failed:RequestTimedOutError: Request timed out
103.29.70.32 failed:RequestTimedOutError: Request timed out
172.104.110.187 failed:RequestTimedOutError: Request timed out
61.244.217.201 failed:RequestTimedOutError: Request timed out
47.88.227.73 failed:RequestTimedOutError: Request timed out
47.88.231.100 failed:RequestTimedOutError: Request timed out
47.88.225.110 failed:RequestTimedOutError: Request timed out
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让 JavaScript 能够脱离浏览器在服务器端运行。Node.js 自带的文件系统模块 `fs` 可以帮助开发者进行文件操作。批量修改文件名可以通过 `fs` 模块提供的 `rename` 方法来实现。以下是一个使用 Node.js 批量修改文件名的基本示例: ```javascript const fs = require('fs'); const path = require('path'); // 假设我们要将当前目录下所有的 .txt 文件修改为 .md 文件 const files = fs.readdirSync('.'); files.forEach((file) => { if (path.extname(file) === '.txt') { // 原文件名 const oldPath = path.join(process.cwd(), file); // 新文件名,这里将 .txt 改为 .md const newPath = oldPath.replace('.txt', '.md'); // 执行重命名操作 fs.rename(oldPath, newPath, (err) => { if (err) { console.error('文件重命名出错:', err); } else { console.log(file + ' has been renamed to ' + path.basename(newPath)); } }); } }); ``` 在上述代码中,我们首先读取当前目录下的所有文件,然后检查每个文件的扩展名。如果文件扩展名为 `.txt`,我们就将其重命名为 `.md`。这里使用 `readdirSync` 方法同步读取目录内容,使用 `join` 方法来构造完整的文件路径,并使用 `replace` 方法来生成新的文件名。最后,调用 `rename` 方法来完成重命名操作。 需要注意的是,错误处理在这里是非常重要的。如果在重命名过程中发生错误(如文件不存在、权限不足等),`rename` 方法的回调函数中会返回错误信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值