Skip to content

Repository files navigation

NODE-PING Workflow Status

a ping wrapper for nodejs

@last-modified: 2025-09-29

License MIT

(C) Daniel Zelisko

http://github.com/danielzzz/node-ping

Description

node-ping is a simple wrapper for the system ping utility.

Installation

npm install ping

Notes:

  • Although it is marked with node >=22, it should technially working in all node version for production purpose. The version is marked for development point of view

Usage

Below are examples extracted from examples

Tradition calls

varping=require('ping');varhosts=['192.168.1.1','google.com','yahoo.com'];hosts.forEach(function(host){ping.sys.probe(host,function(isAlive){varmsg=isAlive ? 'host '+host+' is alive' : 'host '+host+' is dead';console.log(msg);});});

Tradition calls with configuration

varcfg={timeout: 10,// WARNING: -i 2 may not work in other platform like windowsextra: ['-i','2'],};hosts.forEach(function(host){ping.sys.probe(host,function(isAlive){varmsg=isAlive ? 'host '+host+' is alive' : 'host '+host+' is dead';console.log(msg);},cfg);});

Promise wrapper

varping=require('ping');varhosts=['192.168.1.1','google.com','yahoo.com'];hosts.forEach(function(host){ping.promise.probe(host).then(function(res){console.log(res);});});

Promise Wrapper with configurable ping options

hosts.forEach(function(host){// WARNING: -i 2 argument may not work in other platform like windowsping.promise.probe(host,{timeout: 10,extra: ['-i','2'],}).then(function(res){console.log(res);});});

Async-Await

varping=require('ping');varhosts=['192.168.1.1','google.com','yahoo.com'];for(lethostofhosts){letres=awaitping.promise.probe(host);console.log(res);}

Async-Await with configurable ping options

varping=require('ping');varhosts=['192.168.1.1','google.com','yahoo.com'];for(lethostofhosts){// WARNING: -i 2 argument may not work in other platform like windowsletres=awaitping.promise.probe(host,{timeout: 10,extra: ['-i','2'],});console.log(res);}

Support configuration

See PingConfig in types/index.d.ts

Output specification

  • For callback based implementation:

See probeCallback in types/ping-sys.d.ts

  • For promise based implementation

See PingResponse in types/ping-promise.d.ts

Note

  • 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.

FAQ

  • It does not work with busybox's ping implemetation #89

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

Contributing

Before opening a pull request please make sure your changes follow the contribution guidelines.

Contributors

Made with contrib.rocks.

About

a poor man's ping library (using udp scanning) for node

Resources

Contributing

Stars

346 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages