Heya,
I too encountered this when using Net::Ping. Specifing a proto
of "udp" causes Net::Ping to send 1 byte to the echo port on
the remote machine. Specifying a proto of "tcp" also does this. Echo is a udp/tcp service that runs out of inetd
a quick grep of /etc/inetd.conf should show whether or not you've got
it flipped on. Windows boxes appear to cause a non-response (just like
hosts with out echo turned on)... In the end I used ICMP for my proto
but then again it was a quick hack and I'm root...
So, unless you have echo turned on, or you want to run as root Net::Ping
may not do what you need. Might I suggest the following uglyness:
(it does have the added bonus of letting you know if the $host
has sshd running..)
#!/usr/bin/perl -w
use IO::Socket;
$host = '192.34.34.1';
$port = '22';
$socket = IO::Socket::INET->new
(
PeerAddr => $host,
PeerPort => $port,
Proto => "tcp",
Type => SOCK_STREAM,
Timeout => 2
) or die "Can't open port dude..\n";
$answer = <$socket>;
close($socket);
print "Host is alive\n" if($answer);