in reply to Trouble with Net::Ping

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);

Replies are listed 'Best First'.
(tye)Re: Trouble with Net::Ping
by tye (Sage) on Feb 01, 2001 at 04:27 UTC