Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
a ping wrapper for nodejs
@last-modified: 2020-12-26
(C) Daniel Zelisko
http://github.com/danielzzz/node-ping
node-ping is a simple wrapper for the system ping utility
npm install ping
Below are examples extracted from examples
var ping = require('ping');
var hosts = ['192.168.1.1', 'google.com', 'yahoo.com'];
hosts.forEach(function(host){
ping.sys.probe(host, function(isAlive){
var msg = isAlive ? 'host ' + host + ' is alive' : 'host ' + host + ' is dead';
console.log(msg);
});
});
var cfg = {
timeout: 10,
// WARNING: -i 2 may not work in other platform like windows
extra: ['-i', '2'],
};
hosts.forEach(function(host){
ping.sys.probe(host, function(isAlive){
var msg = isAlive ? 'host ' + host + ' is alive' : 'host ' + host + ' is dead';
console.log(msg);
}, cfg);
});
var ping = require('ping');
var hosts = ['192.168.1.1', 'google.com', 'yahoo.com'];
hosts.forEach(function (host) {
ping.promise.probe(host)
.then(function (res) {
console.log(res);
});
});
hosts.forEach(function (host) {
// WARNING: -i 2 argument may not work in other platform like windows
ping.promise.probe(host, {
timeout: 10,
extra: ['-i', '2'],
}).then(function (res) {
console.log(res);
});
});
var ping = require('ping');
var hosts = ['192.168.1.1', 'google.com', 'yahoo.com'];
for(let host of hosts){
let res = await ping.promise.probe(host);
console.log(res);
}
var ping = require('ping');
var hosts = ['192.168.1.1', 'google.com', 'yahoo.com'];
for(let host of hosts){
// WARNING: -i 2 argument may not work in other platform like windows
let res = await ping.promise.probe(host, {
timeout: 10,
extra: ['-i', '2'],
});
console.log(res);
}
Below is the possible configuration
/**
* Cross platform config representation
* @typedef {Object} PingConfig
* @property {boolean} numeric - Map IP address to hostname or not
* @property {number} timeout - Timeout in seconds for each ping request.
* Behaviour varies between platforms. Check platform ping documentation for more information.
* @property {number} deadline - Specify a timeout, in seconds, before ping exits regardless of
how many packets have been sent or received. In this case ping
does not stop after count packet are sent, it waits either for
deadline expire or until count probes are answered or for some
error notification from network. This option is only available on linux and mac.
* @property {number} min_reply - Exit after sending number of ECHO_REQUEST
* @property {boolean} v6 - Ping via ipv6 or not. Default is false
* @property {string} sourceAddr - source address for sending the ping
* @property {number} packetSize - Specifies the number of data bytes to be sent
Default: Linux / MAC: 56 Bytes, Windows: 32 Bytes
* @property {string[]} extra - Optional options does not provided
*/
/**
* Callback after probing given host
* @callback probeCallback
* @param {boolean} isAlive - Whether target is alive or not
* @param {Object} error - Null if no error occurs
*/
/**
* Parsed response
* @typedef {object} PingResponse
* @param {string} inputHost - The input IP address or HOST
* @param {string} host - Parsed host from system command's output
* @param {string} numeric_host - Target IP address
* @param {boolean} alive - True for existed host
* @param {string} output - Raw stdout from system ping
* @param {number} time - Time (float) in ms for first successful ping response
* @param {Array} times - Array of Time (float) in ms for each ping response
* @param {string} min - Minimum time for collection records
* @param {string} max - Maximum time for collection records
* @param {string} avg - Average time for collection records
* @param {string} packetLoss - Packet Losses in percent (100% -> "100.000")
* @param {string} stddev - Standard deviation time for collected records
*/
Since ping
in this module relies on the ping
from underlying platform,
arguments in PingConfig.extra
will definitely be varied across different
platforms.
However, numeric
, timeout
and min_reply
have been abstracted. Values for
them are expected to be cross platform.
By setting numeric
, timeout
or min_reply
to false, you can run ping
without corresponding arguments.
Try to install package iputils
. For example, running apk add iputils
For questions regarding to the implementation of timeout
, and deadline
, please checkout discussions in
#101
For questions regarding to the defintions of host
, inputHost
, and numeric_host
, please checkout
discussions in #133
Before opening a pull request please make sure your changes follow the contribution guidelines.
FAQs
a simple wrapper for ping
The npm package ping receives a total of 41,392 weekly downloads. As such, ping popularity was classified as popular.
We found that ping demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.