2025-01-07 19:28:14 +08:00

85 lines
1.8 KiB
JavaScript

const os = require("os");
// 获取系统架构
function arch() {
return os.arch();
}
// 获取CPU信息
function cpus(format = "full") {
const cpuInfo = os.cpus();
if (format === "simple") {
return cpuInfo.map(({ model, speed }) => ({ model, speed }));
}
return cpuInfo;
}
// 获取内存信息
function memory(type = "totalmem") {
switch (type) {
case "totalmem":
return os.totalmem();
case "freemem":
return os.freemem();
default:
throw new Error("不支持的内存信息类型");
}
}
// 获取网络信息
function network(type = "hostname", internal = false) {
switch (type) {
case "hostname":
return os.hostname();
case "networkInterfaces": {
const interfaces = os.networkInterfaces();
if (!internal) {
// 过滤掉内部接口
Object.keys(interfaces).forEach((key) => {
interfaces[key] = interfaces[key].filter((iface) => !iface.internal);
if (interfaces[key].length === 0) {
delete interfaces[key];
}
});
}
return interfaces;
}
default:
throw new Error("不支持的网络信息类型");
}
}
// 获取平台信息
function platform(type = "platform") {
switch (type) {
case "platform":
return os.platform();
case "type":
return os.type();
case "release":
return os.release();
case "arch":
return os.arch();
case "endianness":
return os.endianness();
case "tmpdir":
return os.tmpdir();
case "homedir":
return os.homedir();
case "uptime":
return os.uptime();
case "userInfo":
return os.userInfo();
default:
throw new Error("不支持的平台信息类型");
}
}
module.exports = {
arch,
cpus,
memory,
network,
platform,
};