use warnings; use strict; use Socket; my ($remote,$port, $iaddr, $paddr, $proto, $line); $remote = $ARGV[0] || die "usage: $0 hostname"; $port = 22 ; # the SSH port $iaddr = inet_aton($remote) || die "no such host: $remote"; $paddr = sockaddr_in($port, $iaddr); $proto = getprotobyname('tcp'); socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "socket() failed: $!"; print "Connecting to port 22...\n"; connect(SOCK, $paddr) || die "connect() failed: $!"; print "Connected.\n"; $line = ; print $line; exit 0 if $line =~ /SSH/; exit 1; #### $ perl sshping.pl localhost; echo $? Connecting to port 22... Connected. SSH-1.99-OpenSSH_x.xx Debian-xxx 0 #### $ perl sshping.pl localhost; echo $? Connecting to port 22... connect() failed: Connection refused at sshping.pl line 14. 111 #### $ if perl sshping.pl localhost; then echo up; else echo down; fi Connecting to port 22... connect() failed: Connection refused at sshping.pl line 14. down