home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / lib / YaST2 / servers_non_y2 / ag_ping < prev    next >
Text File  |  2006-11-29  |  2KB  |  74 lines

  1. #!/usr/bin/perl
  2.  
  3. use lib "/usr/lib/YaST2/agents_non_y2";
  4. use ycp;
  5. use Net::Ping;
  6. use diagnostics;
  7. use strict;
  8.  
  9. my $result;
  10.  
  11. while ( <STDIN> )
  12. {
  13.    # ycpDoVerboseLog();
  14.  
  15.    ycpInit( $_ );
  16.  
  17.    #----------------------------------------------------------
  18.    #  Check the Command
  19.    #  We expect a `Execute( .ping, [ <host1>,<host2> ...]);
  20.    #----------------------------------------------------------
  21.  
  22.    if ( ycpCommandIsExecute &&  ycpArgIsList )
  23.    {
  24.        y2debug( "Now we check with ping the hosts:", ycpGetArgList );
  25.  
  26.  
  27.        ##########################################
  28.        #           OUR PERL MAIN
  29.        ##########################################
  30.  
  31.        # get the list of hosts
  32.        my    @host_array    =  ycpGetArgList;
  33.  
  34.        my    %result;
  35.        my    $host;
  36.  
  37.        # send a ping to all hosts
  38.        my $p = Net::Ping->new("icmp");
  39.        foreach $host (@host_array)
  40.        {
  41.        if ( $p->ping($host, 1) )
  42.        {
  43.            $result{$host} = "    alive";
  44.        }
  45.            else
  46.        {
  47.            $result{$host} = "NOT alive";
  48.        }
  49.        }
  50.        $p->close();
  51.  
  52.        # for debug purpose: print a result list to /var/log/YaST2/y2log
  53.        while (( $host, my $alive) = each(%result))
  54.        {
  55.       y2debug( $alive, ": Host", $host);
  56.        }
  57.  
  58.        ##########################################
  59.        #        END of PERL MAIN
  60.        ##########################################
  61.  
  62.        ycpReturnHashAsMap( %result );
  63.  
  64.    }
  65.    else
  66.    {
  67.        my $return_value = sprintf( "Unknown instruction %s or argument: %s", ycpGetCommand, ycpGetArgType);
  68.  
  69.        ycpReturnSkalarAsString( $return_value );
  70.    }
  71. }
  72.  
  73. # end
  74.