#! /usr/bin/perl use strict ; use warnings ; my $DEF_TIMEOUT = 3 ; use Net::LDAP ; my $LDAP1 = 'ldap1.science.uu.nl' ; my $LDAP2 = 'ldap2.science.uu.nl' ; my $prog = substr $0, rindex ( $0, '/' ) + 1 ; my $Usage = < new() ; ----------------------------------------------------------------- USAGE sub Usage { die "$_[0]$Usage" ; } sub Error { die "[error] $prog: $_[0]\n" ; } sub Warn { warn "[warn] $prog: $_[0]\n" ; } # usage: &GetOptions(ARG,ARG,..) defines $opt_ID as 1 or user spec'ed value # usage: &GetOptions(\%opt,ARG,ARG,..) defines $opt{ID} as 1 or user value # ARG = 'ID' | 'ID=SPC' | 'ID:SPC' for no-arg, required-arg or optional-arg # ID = perl identifier # SPC = i|f|s for integer, fixedpoint real or string argument use Getopt::Long ; Getopt::Long::config ( 'no_ignore_case' ) ; my %opt = () ; Usage '' unless GetOptions ( \%opt, qw(v q d t=i) ) ; Usage("Arg count\n") unless @ARGV >= 0 ; $opt{v} ||= $opt{d} ; $opt{t} ||= $DEF_TIMEOUT unless defined $opt{t} ; @ARGV = ( $LDAP1, $LDAP2 ) if $opt{v} and not @ARGV ; # to test my %res = () ; my $err = "can't connect" ; for ( @ARGV ) { $res { $_ } = Net::LDAP -> new ( $_, timeout => $opt{t} ) ; } printf "%s\n", join "\n" , map { sprintf "%s : %s", $_, ( $res { $_ } ? 'ok' : $err ) ; } sort keys %res if $opt{v} ; my $oks = grep defined $_, values %res ; printf "%s%s\n", @ARGV - $oks, ( $opt{v} ? ' is the returned value' : '' ) ;