From 5739dc4ba46fe6747443fb6dfc925e53f44d99f9 Mon Sep 17 00:00:00 2001 From: markusbloch <> Date: Thu, 7 Feb 2013 22:08:38 +0000 Subject: [PATCH] better support for ping under a non-root account git-svn-id: https://svn.fhem.de/fhem/trunk@2659 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/73_PRESENCE.pm | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/fhem/FHEM/73_PRESENCE.pm b/fhem/FHEM/73_PRESENCE.pm index 44482d38d..6828f6505 100755 --- a/fhem/FHEM/73_PRESENCE.pm +++ b/fhem/FHEM/73_PRESENCE.pm @@ -30,7 +30,6 @@ package main; use strict; use warnings; use Blocking; -use Net::Ping; use Time::HiRes qw(gettimeofday sleep); use DevIo; @@ -356,24 +355,32 @@ PRESENCE_DoLocalPingScan($$) my ($string) = @_; my ($name, $device) = split("\\|", $string); - my $pingtool = Net::Ping->new("icmp"); my $retcode; my $return; - - - if($pingtool) + my $temp; + if($^O =~ m/Win/) { + eval "require Net::Ping;"; + my $pingtool = Net::Ping->new("syn"); - $retcode = $pingtool->ping($device, 5); - $return = "$name|".($retcode ? "present" : "absent"); + if($pingtool) + { + $retcode = $pingtool->ping($device, 5); + $return = "$name|".($retcode ? "present" : "absent"); + } + else + { + $return = "$name|error|Could not create a Net::Ping object."; + } } else { - $return = "$name|error|Could not create a Net::Ping object."; + $temp = qx(ping -c 4 $device); + $return = "$name|".($temp =~ /\d+ bytes from/ ? "present" : "absent"); } -return $return; + return $return; } @@ -884,4 +891,4 @@ Options: =end html_DE -=cut \ No newline at end of file +=cut