perl external command example

shadih rahman shadhin71 at gmail.com
Wed Jan 28 18:22:43 CET 2009


Can someone please give me an example how to submit external command using
perl script.  I am trying to do this and its now working.  The command I am
passing to named pipe is something like this.  Thanks
"ACKNOWLEDGE_HOST_PROBLEM;hostname;1;1;1;1;sr2690;testing
"1233162775


my code is like this.


#!/usr/bin/perl
#use strict;
#use Getopt::Long qw(:config no_ignore_case);
use warnings;
use Data::Dumper;

use Getopt::Long ;

my ($action, $host, $service, $username, $comment, $HELP);
my $now=`date +%s`;
chomp ( $now );
my $commandfile='/var/log/nagios/rw/nagios.cmd';

open CF, ">$commandfile" or die $!;

my $usage = <<EOF;
  usage: $0  -a action -H host -s service -u username -c commnent

Options:
 -a --action
 -m, --host=STRING
    Host name or IP Address
 -s, --service=STRING
    Service Name
 -u, --username=STRING
    The user to authenticate
 -c, --comment=STRING
     Comment here
 -h, --help
    Print detailed help screen
EOF

# handle cmdline args
GetOptions( "a|action=s"   => \$action,
            "m|host=s"     => \$host,
        "s|service=s"  => \$service,
        "u|username=s" => \$username,
        "c|comment=s"  => \$comment,
        "h|help"       => \$HELP
             );
#print "$usage" if ($HELP && $action eq '');
if ( $HELP && ( ! ( defined ( $action) ) ) ) {
print "$usage";
}
&process_command();

sub process_command {
  #if (( $action eq 'status') || ( $action eq 'check') ||  ( $action eq
'reschedule')
  #       ||  ( $action eq 'acknowledge') ||  ( $action eq 'ack') ||
($action eq 'dis_check')
  #       || ($action eq 'ena_check') || ($action eq 'dis_not') || ($action
eq 'ena_not')) {

  if ( $action eq 'acknowledge' ) {
    process_acknowledge ();
  }
  elsif ( $action eq 'reschedule' ) {
    process_reschedule ();
  }
  else {
print " Only possible actions are status check reschedule acknowledge
disable_check enable_check disable_notification  and enable_notification\n";
  }
}

sub process_acknowledge {
  if ( defined ( $service ) ) {
    send_to_named_pipe (
"ACKNOWLEDGE_SVC_PROBLEM;$host;$service;1;1;1;$username;$comment" );
  }
  else {
    send_to_named_pipe (
"ACKNOWLEDGE_HOST_PROBLEM;$host;1;1;1;1;$username;$comment" );
}
}

sub process_reschedule {
  if ( defined ( $service ) ) {
    send_to_named_pipe (
"SCHEDULE_FORCED_SVC_CHECK;host1;service1;1110741500" );
  }
  else {
    send_to_named_pipe ( "SCHEDULE_FORCED_HOST_CHECK;$host;1110741500\n" );
  }
}
sub send_to_named_pipe {
  my ($command )  = @_;
  chomp ( $command );

  if ( defined ( $command ) ) {
    print CF "\"$command\n\"$now";


  }

}
close CF;


-- 
Cordially,
Shadhin Rahman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-lists.org/archive/users/attachments/20090128/6fe1be05/attachment.html>
-------------- next part --------------
------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
-------------- next part --------------
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null


More information about the Users mailing list