#!/usr/bin/perl -w use strict; use IO::Socket::INET; use Getopt::Long; my @hosts = ""; my $timeout = "2"; my $port = ""; my $opts = GetOptions("host=s" => \@hosts, "port=s" => \$port, "timeout=s" => \$timeout); @hosts = split /,/, join(',',@hosts); die "usage: sp -h -p \n" unless $hosts[1]; for my $host(@hosts) { next if $host eq ''; my $status = ( connection($host, $port) == 0 ) ? "Up" : "Down"; printf " %-20s %-5s %-1s\n", $host, $port, $status; } ############## sub connection ############## { my $host = shift; my $tcp_port = shift; my $sock = IO::Socket::INET ->new( Timeout => $timeout, PeerAddr => $host, PeerPort => $tcp_port, Proto => 'udp' ); die "Unable to return $sock\n" unless return $sock ? 0 : 1; }