extended windows support (users, inetLatency)
This commit is contained in:
parent
a907480ca7
commit
63c7d2be54
@ -95,6 +95,7 @@ Other changes
|
|||||||
|
|
||||||
| Version | Date | Comment |
|
| Version | Date | Comment |
|
||||||
| -------------- | -------------- | -------- |
|
| -------------- | -------------- | -------- |
|
||||||
|
| 3.22.0 | 2017-06-19 | extended windows support (`users`, `inetLatency`) |
|
||||||
| 3.21.0 | 2017-06-18 | extended time (timezone), extended windows support (battery, getAll...) |
|
| 3.21.0 | 2017-06-18 | extended time (timezone), extended windows support (battery, getAll...) |
|
||||||
| 3.20.1 | 2017-06-17 | updated docs |
|
| 3.20.1 | 2017-06-17 | updated docs |
|
||||||
| 3.20.0 | 2017-06-16 | extend windows support (cpu, cpuCache, cpuCurrentspeed, mem, networkInterfaces, docker) |
|
| 3.20.0 | 2017-06-16 | extend windows support (cpu, cpuCache, cpuCurrentspeed, mem, networkInterfaces, docker) |
|
||||||
|
|||||||
13
README.md
13
README.md
@ -42,6 +42,7 @@ si.cpu()
|
|||||||
|
|
||||||
### Latest Activity
|
### Latest Activity
|
||||||
|
|
||||||
|
- Version 3.22.0: extended windows support (`users`, `inetLatency`)
|
||||||
- Version 3.21.0: extended `time` (timezone), extended windows support (`battery`, `getAll...`)
|
- Version 3.21.0: extended `time` (timezone), extended windows support (`battery`, `getAll...`)
|
||||||
- Version 3.20.0: added additional windows support (`cpu`, `cpuCache`, `cpuCurrentspeed`, `mem`, `networkInterfaces`, `docker`)
|
- Version 3.20.0: added additional windows support (`cpu`, `cpuCache`, `cpuCurrentspeed`, `mem`, `networkInterfaces`, `docker`)
|
||||||
- Version 3.19.0: OSX temperature now an optional dependency (see comments below in reference!)
|
- Version 3.19.0: OSX temperature now an optional dependency (see comments below in reference!)
|
||||||
@ -192,11 +193,11 @@ I also created a nice little command line tool called [mmon][mmon-github-url] (
|
|||||||
| | logofile | X | X | X | e.g. 'apple', 'debian', 'fedora', ... |
|
| | logofile | X | X | X | e.g. 'apple', 'debian', 'fedora', ... |
|
||||||
| si.versions(cb) | {...} | X | X | X | Version information (kernel, ssl, node, ...) |
|
| si.versions(cb) | {...} | X | X | X | Version information (kernel, ssl, node, ...) |
|
||||||
| si.shell(cb) | : string | X | X | | standard shell |
|
| si.shell(cb) | : string | X | X | | standard shell |
|
||||||
| si.users(cb) | [{...}] | X | X | | array of users online |
|
| si.users(cb) | [{...}] | X | X | X | array of users online |
|
||||||
| | [0].user | X | X | | user name |
|
| | [0].user | X | X | X | user name |
|
||||||
| | [0].tty | X | X | | terminal |
|
| | [0].tty | X | X | X | terminal |
|
||||||
| | [0].date | X | X | | login date |
|
| | [0].date | X | X | X | login date |
|
||||||
| | [0].time | X | X | | login time |
|
| | [0].time | X | X | X | login time |
|
||||||
| | [0].ip | X | X | | ip address (remote login) |
|
| | [0].ip | X | X | | ip address (remote login) |
|
||||||
| | [0].command | X | X | | last command or shell |
|
| | [0].command | X | X | | last command or shell |
|
||||||
|
|
||||||
@ -272,7 +273,7 @@ I also created a nice little command line tool called [mmon][mmon-github-url] (
|
|||||||
| | ok | X | X | | status code OK (2xx, 3xx) |
|
| | ok | X | X | | status code OK (2xx, 3xx) |
|
||||||
| | status | X | X | | status code |
|
| | status | X | X | | status code |
|
||||||
| | ms | X | X | | response time in ms |
|
| | ms | X | X | | response time in ms |
|
||||||
| si.inetLatency(host, cb) | : number | X | X | | response-time (ms) to external resource<br>host parameter is optional (default 8.8.8.8)|
|
| si.inetLatency(host, cb) | : number | X | X | X | response-time (ms) to external resource<br>host parameter is optional (default 8.8.8.8)|
|
||||||
|
|
||||||
#### 7. Current Load, Processes & Services
|
#### 7. Current Load, Processes & Services
|
||||||
|
|
||||||
|
|||||||
@ -181,7 +181,7 @@ function getDynamicData(srv, iface, callback) {
|
|||||||
|
|
||||||
// use closure to track ƒ completion
|
// use closure to track ƒ completion
|
||||||
let functionProcessed = (function () {
|
let functionProcessed = (function () {
|
||||||
let totalFunctions = (_windows ? 5 : 14);
|
let totalFunctions = (_windows ? 7 : 14);
|
||||||
|
|
||||||
return function () {
|
return function () {
|
||||||
if (--totalFunctions === 0) {
|
if (--totalFunctions === 0) {
|
||||||
@ -220,12 +220,10 @@ function getDynamicData(srv, iface, callback) {
|
|||||||
functionProcessed();
|
functionProcessed();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!_windows) {
|
|
||||||
users.users().then(res => {
|
users.users().then(res => {
|
||||||
data.users = res;
|
data.users = res;
|
||||||
functionProcessed();
|
functionProcessed();
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
if (!_windows) {
|
if (!_windows) {
|
||||||
processes.processes().then(res => {
|
processes.processes().then(res => {
|
||||||
@ -296,12 +294,10 @@ function getDynamicData(srv, iface, callback) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_windows) {
|
|
||||||
internet.inetLatency().then(res => {
|
internet.inetLatency().then(res => {
|
||||||
data.inetLatency = res;
|
data.inetLatency = res;
|
||||||
functionProcessed();
|
functionProcessed();
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -79,14 +79,9 @@ function inetLatency(host, callback) {
|
|||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
if (_windows) {
|
|
||||||
let error = new Error(NOT_SUPPORTED);
|
|
||||||
if (callback) { callback(NOT_SUPPORTED) }
|
|
||||||
reject(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
let t = Date.now();
|
let t = Date.now();
|
||||||
let cmd;
|
let cmd;
|
||||||
|
if (_linux || _darwin) {
|
||||||
if (_linux) {
|
if (_linux) {
|
||||||
cmd = "ping -c 2 -w 3 " + host + " | grep rtt | cut -d'/' -f4 | awk '{ print $3 }'";
|
cmd = "ping -c 2 -w 3 " + host + " | grep rtt | cut -d'/' -f4 | awk '{ print $3 }'";
|
||||||
}
|
}
|
||||||
@ -102,6 +97,26 @@ function inetLatency(host, callback) {
|
|||||||
if (callback) { callback(result) }
|
if (callback) { callback(result) }
|
||||||
resolve(result);
|
resolve(result);
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
if (_windows) {
|
||||||
|
exec('ping ' + host + ' -n 1', function (error, stdout) {
|
||||||
|
let result = -1;
|
||||||
|
if (!error) {
|
||||||
|
let lines = stdout.toString().split('\r\n');
|
||||||
|
lines.shift();
|
||||||
|
lines.forEach(function (line) {
|
||||||
|
if (line.toLowerCase().startsWith(' min')) {
|
||||||
|
let l = line.replace(/ +/g, " ").split(' ');
|
||||||
|
if (l.length > 8) {
|
||||||
|
result = parseFloat(l[9])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (callback) { callback(result) }
|
||||||
|
resolve(result);
|
||||||
|
})
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
45
lib/users.js
45
lib/users.js
@ -140,12 +140,6 @@ function users(callback) {
|
|||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
if (_windows) {
|
|
||||||
let error = new Error(NOT_SUPPORTED);
|
|
||||||
if (callback) { callback(NOT_SUPPORTED) }
|
|
||||||
reject(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
let result = [];
|
let result = [];
|
||||||
|
|
||||||
// linux
|
// linux
|
||||||
@ -161,12 +155,9 @@ function users(callback) {
|
|||||||
// lines / split
|
// lines / split
|
||||||
lines = stdout.toString().split('\n');
|
lines = stdout.toString().split('\n');
|
||||||
result = parseUsers1(lines);
|
result = parseUsers1(lines);
|
||||||
if (callback) { callback(result) }
|
|
||||||
resolve(result);
|
|
||||||
} else {
|
|
||||||
if (callback) { callback(result) }
|
|
||||||
resolve(result);
|
|
||||||
}
|
}
|
||||||
|
if (callback) { callback(result) }
|
||||||
|
resolve(result);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (callback) { callback(result) }
|
if (callback) { callback(result) }
|
||||||
@ -185,13 +176,33 @@ function users(callback) {
|
|||||||
// lines / split
|
// lines / split
|
||||||
let lines = stdout.toString().split('\n');
|
let lines = stdout.toString().split('\n');
|
||||||
result = parseUsers2(lines);
|
result = parseUsers2(lines);
|
||||||
|
|
||||||
if (callback) { callback(result) }
|
|
||||||
resolve(result);
|
|
||||||
} else {
|
|
||||||
if (callback) { callback(result) }
|
|
||||||
resolve(result);
|
|
||||||
}
|
}
|
||||||
|
if (callback) { callback(result) }
|
||||||
|
resolve(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (_windows) {
|
||||||
|
exec("query user", function (error, stdout) {
|
||||||
|
if (stdout) {
|
||||||
|
// lines / split
|
||||||
|
let lines = stdout.toString().split('\r\n');
|
||||||
|
lines.shift();
|
||||||
|
lines.forEach(function (line) {
|
||||||
|
let l = line.replace(/ +/g, " ").split(' ');
|
||||||
|
if (l.length >= 7) {
|
||||||
|
result.push({
|
||||||
|
user: l[0].replace(/>/g, " "),
|
||||||
|
tty: l[1],
|
||||||
|
date: l[5].substr(6,4) + '-' + l[5].substr(3,2) + '-' + l[5].substr(0,2),
|
||||||
|
time: l[4],
|
||||||
|
ip: '',
|
||||||
|
command: ''
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (callback) { callback(result) }
|
||||||
|
resolve(result);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user