Nodejs 获取系统信息

const os = require('os');
const { exec } = require('child_process');
const networksObj = os.networkInterfaces();
const networkRes = networksObj["以太网"] && networksObj["以太网"][0];

//获取IP地址
function getLocalIP (){
  return networkRes.address;
}

//获取mac地址
function getLocalMac (){
  return networkRes.mac.replaceAll(":","").toUpperCase();
}

//获取计算机名称
function getPCName (){
  return os.hostname();
}

//获取cpu序列号
function getCpuNum() {
  return new Promise((resolve, reject) => {
    let command = '';
    switch (process.platform) {
      case 'win32':
        command = 'wmic cpu get ProcessorId';
        break;
      case 'linux':
        command = 'cat /proc/cpuinfo | grep Serial | awk \'{print $NF}\'';
        break;
      case 'darwin':
        command = 'system_profiler SPHardwareDataType | grep "Serial Number" | awk \'{print $NF}\'';
        break;
      default:
        reject(new Error(`Unsupported platform: ${process.platform}`));
    }
    exec(command, (err, stdout, stderr) => {
      if (err) {
        reject(err);
      } else {
        resolve(stdout.trim());
      }
    });
  });
}

function getLocalCpuNum (){
   return getCpuNum().then((serialNumber) => {
    var str = serialNumber.split("\r\r\n");
     return  str[1];
  }).catch((err) => {
    console.error(`Failed to get CPU serial number: ${err.message}`);
    return err.message;
  })
}

function getHardDisk(){
  return new Promise((resolve, reject) => {
    let command = '';
    switch (process.platform) {
      case 'win32':
        command = 'wmic logicaldisk get Caption,FreeSpace,Size,VolumeSerialNumber,Description,FileSystem  /format:list';
        break;
      case 'linux':
        reject(new Error('未知'));
        break;
      case 'darwin':
        reject(new Error('未知'));
        break;
      default:
        reject(new Error(`Unsupported platform: ${process.platform}`));
    }
    exec(command, (err, stdout, stderr) => {
      if (err) {
        reject(err);
      } else {
        resolve(stdout.trim());
      }
    });
  });
}

function getSysHardDisk(){
  return getHardDisk().then((sysHardDisk) => {
    var str = sysHardDisk.split("\r\r\n");
    var result = {
         mount: str[0],
         type: str[2],
         size: str[4],
         number: str[5]
     };
     var sysName = "";
     switch (process.platform) {
       case 'win32':
         sysName= "Windows";
         break;
       case 'linux':
         sysName= "Linux";
         break;
       case 'darwin':
         sysName= "Darwin";
         break;
       default:
         "";
     }
    var tmpMount = result.mount.split("=")[1];
    var tmpNumber = result.number.split("=")[1];
    return  (sysName+ " " + tmpMount +"-" + tmpNumber).replaceAll(":","");
 }).catch((err) => {
   console.error(`Failed to get hardSerial: ${err.message}`);
   return err.message;
 })
}

function getHardInfo(){
  return getHardDisk().then((sysHardDisk) => {
    var str = sysHardDisk.split("\r\r\n");
    var result = {
         mount: str[0],
         type: str[2],
         size: str[4],
         number: str[5]
     };
   
    var tmpMount = result.mount.split("=")[1];
    var tmpNumber = result.number.split("=")[1];
    var tmpType = result.type.split("=")[1];
    var tmpSize = result.size.split("=")[1];
    tmpSize = Math.floor((tmpSize / (1024 * 1024 * 1024)));
    return (tmpMount +"^" + tmpNumber + "^" + tmpType  + "^" + tmpSize + "G").replaceAll(":","");
 }).catch((err) => {
   console.error(`Failed to get hardSerial: ${err.message}`);
   return err.message;
 })
}

function getHardSerial(){
  return new Promise((resolve, reject) => {
    let command = '';
    switch (process.platform) {
      case 'win32':
        command = 'wmic diskdrive get SerialNumber';
        break;
      case 'linux':
        command = 'lsblk -d -n -o serial';
        break;
      case 'darwin':
        reject(new Error('未知'));
        break;
      default:
        reject(new Error(`Unsupported platform: ${process.platform}`));
    }
    exec(command, (err, stdout, stderr) => {
      if (err) {
        reject(err);
      } else {
        resolve(stdout.trim());
      }
    });
  });
}

function getLocalHardSerial(){
  return  getHardSerial().then((hardSerial) => {
    var str = hardSerial.split("\r\r\n");
    return str[1];
 }).catch((err) => {
   console.error(`Failed to get hardSerial: ${err.message}`);
   return err.message;
 })
}

function getKdbrowserRate(){
  return "0";
}

export default {
  getLocalIP,
  getLocalMac,
  getPCName,
  getLocalCpuNum,
  getSysHardDisk,
  getHardInfo,
  getLocalHardSerial,
  getKdbrowserRate
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobangsky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值