diff --git a/io/ping/88-ping.js b/io/ping/88-ping.js index 71b250dd..1db1f59e 100644 --- a/io/ping/88-ping.js +++ b/io/ping/88-ping.js @@ -18,6 +18,7 @@ module.exports = function(RED) { else { node.error("Sorry - your platform - "+plat+" - is not recognised."); } var res = false; var line = ""; + var fail = false; //var regex = /from.*time.(.*)ms/; var regex = /=.*[<|=]([0-9]*).*TTL|ttl..*=([0-9\.]*)/; ex.stdout.on('data', function (data) { @@ -26,7 +27,20 @@ module.exports = function(RED) { //ex.stderr.on('data', function (data) { //console.log('[ping] stderr: ' + data); //}); + ex.on('error', function (err) { + fail = true; + if (err.code === "ENOENT") { + node.error(err.code + " ping command not found"); + } + else if (err.code === "EACCES") { + node.error(err.code + " can't run ping command"); + } + else { + node.error(err.code); + } + }); ex.on('close', function (code) { + if (fail) { fail = false; return; } var m = regex.exec(line)||""; if (m !== '') { if (m[1]) { res = Number(m[1]); } diff --git a/io/ping/README.md b/io/ping/README.md index 6c1ebbcb..692be563 100644 --- a/io/ping/README.md +++ b/io/ping/README.md @@ -11,9 +11,11 @@ Run the following command in your Node-RED user directory - typically `~/.node-r npm install node-red-node-ping -**Gotcha** +**Gotchas** -On some versions on Raspbian (Raspberry Pi) `ping` seems to be a root only command. + 1 This won't run on Ubunti Snap as the strict container does not allow spawning of external commands (like ping). + + 2 On some versions on Raspbian (Raspberry Pi) `ping` seems to be a root only command. The fix is to allow it as follows sudo setcap cap_net_raw=ep /bin/ping diff --git a/io/ping/package.json b/io/ping/package.json index 4ea4be27..eeac8944 100644 --- a/io/ping/package.json +++ b/io/ping/package.json @@ -1,6 +1,6 @@ { "name" : "node-red-node-ping", - "version" : "0.0.15", + "version" : "0.0.16", "description" : "A Node-RED node to ping a remote server, for use as a keep-alive check.", "dependencies" : { },