added versions (kernel, ssl, node, npm, pm2, ...)

This commit is contained in:
Sebastian Hildebrandt 2016-09-16 13:12:04 +02:00
parent e1827fd78b
commit d338e90e83
2 changed files with 122 additions and 76 deletions

View File

@ -42,6 +42,7 @@ si.cpu()
### Latest Activity ### Latest Activity
- Version 3.6.0: added versions (kernel, ssl, node, npm, pm2, ...).
- Version 3.5.0: added graphics info (controller and display). - Version 3.5.0: added graphics info (controller and display).
- Version 3.4.0: rewritten currentLoad and CPU load for processes (linux). This is now much more accurate. - Version 3.4.0: rewritten currentLoad and CPU load for processes (linux). This is now much more accurate.
- Version 3.3.0: added process list. Get full process list including details like cpu and mem usage, status, command, ... - Version 3.3.0: added process list. Get full process list including details like cpu and mem usage, status, command, ...
@ -69,6 +70,7 @@ Here all changes more detailed:
New Functions New Functions
- `versions`: returns object of versions - kernel, ssl, node, npm, ...(new in version 3.6)
- `graphics`: returns arrays of graphics controllers and displays (new in version 3.5) - `graphics`: returns arrays of graphics controllers and displays (new in version 3.5)
- `networkInterfaceDefault`: returns default network interface (new in version 3.4) - `networkInterfaceDefault`: returns default network interface (new in version 3.4)
- `processes`: now returns also a process list with all process details (new in version 3.3) - `processes`: now returns also a process list with all process details (new in version 3.3)
@ -188,6 +190,7 @@ This library is splitted in several sections:
| - arch | X | X | same as os.arch() | | - arch | X | X | same as os.arch() |
| - hostname | X | X | same as os.hostname() | | - hostname | X | X | same as os.hostname() |
| - logofile | X | X | e.g. 'apple', 'debian', 'fedora', ... | | - logofile | X | X | e.g. 'apple', 'debian', 'fedora', ... |
| si.versions(cb) | X | X | Version information (kernel, ssl, node, ...) |
| si.cpu(cb) | X | X | CPU information| | si.cpu(cb) | X | X | CPU information|
| - manufacturer | X | X | e.g. 'Intel(R)' | | - manufacturer | X | X | e.g. 'Intel(R)' |
| - brand | X | X | e.g. 'Core(TM)2 Duo' | | - brand | X | X | e.g. 'Core(TM)2 Duo' |
@ -394,6 +397,7 @@ I am happy to discuss any comments and suggestions. Please feel free to contact
| Version | Date | Comment | | Version | Date | Comment |
| -------------- | -------------- | -------- | | -------------- | -------------- | -------- |
| 3.6.0 | 2016-09-14 | added versions (kernel, ssl, node, npm, pm2, ...) |
| 3.5.1 | 2016-09-14 | bugfix graphics info | | 3.5.1 | 2016-09-14 | bugfix graphics info |
| 3.5.0 | 2016-09-14 | added graphics info (controller, display) | | 3.5.0 | 2016-09-14 | added graphics info (controller, display) |
| 3.4.4 | 2016-09-02 | tiny fixes system.model, getDefaultNetworkInterface | | 3.4.4 | 2016-09-02 | tiny fixes system.model, getDefaultNetworkInterface |

View File

@ -81,6 +81,7 @@
// -------------------------------- // --------------------------------
// //
// version date comment // version date comment
// 3.6.0 2016-09-16 added versions (kernel, ssl, node, npm, pm2, ...)
// 3.5.1 2016-09-14 bugfix graphics info // 3.5.1 2016-09-14 bugfix graphics info
// 3.5.0 2016-09-14 added graphics info (controller, display) // 3.5.0 2016-09-14 added graphics info (controller, display)
// 3.4.4 2016-09-02 tiny fixes system.model, getDefaultNetworkInterface // 3.4.4 2016-09-02 tiny fixes system.model, getDefaultNetworkInterface
@ -435,6 +436,45 @@ function osInfo(callback) {
exports.osInfo = osInfo; exports.osInfo = osInfo;
function versions(callback) {
return new Promise((resolve, reject) => {
process.nextTick(() => {
if (_windows) {
let error = new Error(NOT_SUPPORTED);
if (callback) { callback(NOT_SUPPORTED) }
reject(error);
}
let result = {
kernel: os.release(),
node: process.versions.node,
v8: process.versions.v8,
npm: '',
pm2: '',
openssl: process.versions.openssl
};
let lines = [];
exec("npm -v", function (error, stdout) {
if (!error) {
result.npm = stdout.toString().split('\n')[0];
}
exec("pm2 -v", function (error, stdout) {
if (!error) {
lines = stdout.toString().split('\n');
if (lines.length >= 2) {
result.pm2 = lines[lines.length-2];
}
}
if (callback) { callback(result) }
resolve(result);
});
});
});
});
}
exports.versions = versions;
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------
// 4. CPU // 4. CPU
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------
@ -816,7 +856,6 @@ function mem(callback) {
exports.mem = mem; exports.mem = mem;
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------
// 6. Battery // 6. Battery
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------
@ -1013,8 +1052,7 @@ function graphics(callback) {
is_vga = true; is_vga = true;
let endpos = lines[i].search(/\[[0-9a-f]{4}:[0-9a-f]{4}]|$/); let endpos = lines[i].search(/\[[0-9a-f]{4}:[0-9a-f]{4}]|$/);
let parts = lines[i].substr(vgapos, endpos - vgapos).split(':'); let parts = lines[i].substr(vgapos, endpos - vgapos).split(':');
if (parts.length > 1) if (parts.length > 1) {
{
parts[1] = parts[1].trim(); parts[1] = parts[1].trim();
if (parts[1].toLowerCase().indexOf('corporation')) { if (parts[1].toLowerCase().indexOf('corporation')) {
currentController.vendor = parts[1].substr(0, parts[1].toLowerCase().indexOf('corporation') + 11).trim(); currentController.vendor = parts[1].substr(0, parts[1].toLowerCase().indexOf('corporation') + 11).trim();
@ -2164,6 +2202,7 @@ function processes(callback) {
let guest_nice = (parts.length >= 11 ? parseInt(parts[10]) : 0); let guest_nice = (parts.length >= 11 ? parseInt(parts[10]) : 0);
return user + nice + system + idle + iowait + irq + softirq + steal + guest + guest_nice; return user + nice + system + idle + iowait + irq + softirq + steal + guest + guest_nice;
} }
function parseProcPidStat(line, all) { function parseProcPidStat(line, all) {
let parts = line.replace(/ +/g, " ").split(' '); let parts = line.replace(/ +/g, " ").split(' ');
if (parts.length >= 17) { if (parts.length >= 17) {
@ -2525,7 +2564,6 @@ function users(callback) {
}); });
} }
}); });
}); });
} }
@ -2640,6 +2678,7 @@ function dockerContainers(all, callback) {
}); });
return (filtered.length > 0); return (filtered.length > 0);
} }
// fallback - if only callback is given // fallback - if only callback is given
if (isFunction(all) && !callback) { if (isFunction(all) && !callback) {
callback = all; callback = all;
@ -2932,6 +2971,8 @@ function getStaticData(callback) {
data.system = res; data.system = res;
osInfo().then(res => { osInfo().then(res => {
data.os = res; data.os = res;
versions().then(res => {
data.versions = res;
cpu().then(res => { cpu().then(res => {
data.cpu = res; data.cpu = res;
graphics().then(res => { graphics().then(res => {
@ -2945,6 +2986,7 @@ function getStaticData(callback) {
}) })
}) })
}) })
})
}); });
}); });
} }