1. 使用 iconv-lite 依赖库
var cluster = require('child_process')
var iconv = require('iconv-lite');
var encoding = 'cp936';
var binaryEncoding = 'binary';
cluster.exec("netsh wlan show interfaces|more", { encoding: binaryEncoding }, (err, res) => {
var node_nics = require("os").networkInterfaces();
var lines = iconv.decode(Buffer.from(res, binaryEncoding), encoding).split('\r\n');
var fields = [
'name',
'model',
'vendor',
'mac_address',
'status',
'ssid',
'bssid',
'mode',
'radio',
'authentication',
'encryption',
'connection',
'channel',
'reception',
'transmission',
'signal',
'profil'
];
var connections = [];
var tmp = {}
var len = 0;
for (var i = 3; i < lines.length; i++) {
if (lines[i] != "" && lines[i] != null && lines[i].indexOf(":") != -1) {
tmp[fields[len]] = lines[i].split(':')[1].trim()
len += 1;
} else {
if (tmp['name'] != null && tmp['model'] != null && tmp['vendor'] != null && tmp['mac_address'] != null && tmp['status'] != null) {
var node_nic = node_nics[tmp.name] || [];
node_nic.forEach(function (type) {
if (type.family == 'IPv4') {
tmp.ip_address = type.address;
tmp.ip_gateway = "http://"+type.address.split('.')[0] + "." + type.address.split('.')[1] + "." + type.address.split('.')[2] + ".1"
}
});
connections.push(tmp);
tmp = {}
len = 0;
}
}
}
console.log(connections)
})
2.不使用依赖库,设置系统编码语言获取
var cluster = require('child_process')
cluster.exec("cmd /c chcp 65001>nul && netsh wlan show interface", (err, res) => {
var node_nics = require("os").networkInterfaces();
var lines = res.split('\r\n');
var fields = [
'name',
'model',
'vendor',
'mac_address',
'status',
'ssid',
'bssid',
'mode',
'radio',
'authentication',
'encryption',
'connection',
'channel',
'reception',
'transmission',
'signal',
'profil'
];
var connections = [];
var tmp = {}
var len = 0;
for (var i = 3; i < lines.length; i++) {
if (lines[i] != "" && lines[i] != null && lines[i].indexOf(":") != -1) {
tmp[fields[len]] = lines[i].split(':')[1].trim()
len += 1;
} else {
if (tmp['name'] != null && tmp['model'] != null && tmp['vendor'] != null && tmp['mac_address'] != null && tmp['status'] != null) {
var node_nic = node_nics[tmp.name] || [];
node_nic.forEach(function (type) {
if (type.family == 'IPv4') {
tmp.ip_address = type.address;
tmp.ip_gateway = "http://"+type.address.split('.')[0] + "." + type.address.split('.')[1] + "." + type.address.split('.')[2] + ".1"
}
});
connections.push(tmp);
tmp = {}
len = 0;
}
}
}
})