in reply to Remote host back online test
With the SSH server on my box running: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 = <SOCK>; print $line; exit 0 if $line =~ /SSH/; exit 1;
If I stop the SSH server on my box:$ perl sshping.pl localhost; echo $? Connecting to port 22... Connected. SSH-1.99-OpenSSH_x.xx Debian-xxx 0
You might want to have the perl script loop (with a sleep for a few seconds) and retry the connect, or you could do that in an external bash script by checking the exit code...$ 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
|
|---|