Hallo Forum!
Ich habe folgendes Problem.
Wir haben von einer Firma Perl Scripte bekommen, die Nagios Abfragen initialisieren.
Diese Scripte sind unglaublich lange und so verschachtelt, dass man sich damit vermutlich wochenlang auseinandersetzen muesste, um herauszufinden, was eben gerade geschieht.
Das Problem an dem Script ist, dass es nur "Found error:" zurueckliefert; wir aber wuerden es gerne so umschreiben, dass die komplette Zeile vom Log-File ausgegeben wird.
Die checkcommands.cfg sieht so aus:
Jetzt habe ich versucht das Perlscript durchzugehen im Debugger, jedoch half mir das nicht weiter, nun wollte ich mir vll. alle Zustaende der Variablen ausgeben lassen, aber es scheint sowas nicht zu geben!
Weiss jemand vll. eine anderen Moeglichkeit, um die Zustaende und Werte der einzelnen Variablen sich ausgeben zu lassen?
Um einen kurzen Abschnitt herzuzeigen aus dem Script:
Mich wuerde gerne interessieren, ob der Debugger in die Subroutine SetExitText kommt, was bisher in den einzelnen Durchlaeufen nicht so zu scheinen mag!
Ich habe schon folgende Sachen versucht im Debugger:
X, x, s, n, V, v -> Leider alles ohne Ergebnis der einzelnen Variablen zum Zeitpunkt des Aufrufes!
Danke fuer jede Hilfe!
Ich habe folgendes Problem.
Wir haben von einer Firma Perl Scripte bekommen, die Nagios Abfragen initialisieren.
Diese Scripte sind unglaublich lange und so verschachtelt, dass man sich damit vermutlich wochenlang auseinandersetzen muesste, um herauszufinden, was eben gerade geschieht.
Das Problem an dem Script ist, dass es nur "Found error:" zurueckliefert; wir aber wuerden es gerne so umschreiben, dass die komplette Zeile vom Log-File ausgegeben wird.
Die checkcommands.cfg sieht so aus:
Code:
command_name orclog_probe_bhs_warn
command_line /ITdesign/plugins/itd_check_value.pl -h $HOSTADDRESS$ -s $SERVICEDESC$ -Cmd 'tail -10 /usr/orc/log/$ARG1$.log |grep -c $ARG2$' -q "" -t ssh -w gt0 -c OFF -OkText 'Nothing found in log.' -WarningText 'Found $ARG2$ in the last 10 lines!'
}
Jetzt habe ich versucht das Perlscript durchzugehen im Debugger, jedoch half mir das nicht weiter, nun wollte ich mir vll. alle Zustaende der Variablen ausgeben lassen, aber es scheint sowas nicht zu geben!
Weiss jemand vll. eine anderen Moeglichkeit, um die Zustaende und Werte der einzelnen Variablen sich ausgeben zu lassen?
Um einen kurzen Abschnitt herzuzeigen aus dem Script:
Code:
use strict;
use Data::Dumper;
# include WATCH IT libraries
use lib '/ITdesign/lib';
use Variables;
use CommandLine;
use MacroHandler;
use FileOperations qw ( ReadCsvFile );
use PluginFunctions qw ( ExitPlugin mcompare );
use CommonFunctions qw ( normalize );
use Communication qw ( ExecuteCommand GetMrtgData SnmpGetV1 );
use CommonFunctions qw ( GetCurrentTimeStamp GetTimeDifference );
my $grefaLines = [];# lines from PIPE or CMD
my $gFoundLines; # found lines in $grefaLines
my $grefhMacros; # Macros e.g. $RUNTIME, $EXITCODE
my $grefhOutput; # what we write to CSV or STDOUT or into mcompare
my $gIFS=',';
my $gOFS=',';
# no data from anywhere - print help and exit
$grefhOpt->{help} and exit system ("$refhPath->{RelBin}/doc.pl $0");
defined $grefhOpt->{MacroPfx} or $grefhOpt->{MacroPfx} = '@';
defined $grefhOpt->{NL} or $grefhOpt->{NL} = '<br>';
defined $grefhOpt->{k} or $grefhOpt->{k} = 'KWCounter';
my $gDebug = "$grefhOpt->{Debug}";
# set field seperator if indicated by the commandline
defined $grefhOpt->{IFS} and $gIFS = $grefhOpt->{IFS};
defined $grefhOpt->{OFS} and $gOFS = $grefhOpt->{OFS};
# undef if options are empty
$grefhOpt->{Comp} eq "" and undef $grefhOpt->{Comp};
$grefhOpt->{q} eq "" and undef $grefhOpt->{q};
# generate structure for csv file and exit
my $refhStruct = {
KeyWord => "$grefhOpt->{k}", # required parameter
Host => "$grefhOpt->{h}", # required parameter
Service => "$grefhOpt->{s}", # required parameter
Query => "$grefhOpt->{q}", # required parameter
UnknownExit => "$grefhOpt->{UnknownExit}", # optional
UnknownText => "$grefhOpt->{UnknownText}", # optional
Passive => "$grefhOpt->{Passive}", # optional
Debug => "$gDebug" # optional
};
.
.
.
#-------------------------------------------------------------------------
# set default text values
#-------------------------------------------------------------------------
sub SetExitText {
# set default text
if (defined $grefhOpt->{Text}) {
$grefhMacros->{Text} = "$grefhOpt->{Text}";
} else {
if ("X$grefhMacros->{QUERY}" eq "X") { # no -q ... nubers
$grefhMacros->{Text} = "Value: $grefaLines->[0]";
} else {
$grefhMacros->{Text} = "\"$grefhOpt->{q}\" matches in ".
HandleNFMacro ()." line(s)";
}
}
if ($grefhOutput->{ExitCode} == $STATE_OK and
defined $grefhOpt->{OkText}) {
$grefhMacros->{Text} = "$grefhOpt->{OkText}";
} elsif ($grefhOutput->{ExitCode} == $STATE_WARNING and
defined $grefhOpt->{WarningText}) {
$grefhMacros->{Text} = "$grefhOpt->{WarningText}";
} elsif ($grefhOutput->{ExitCode} == $STATE_CRITICAL and
defined $grefhOpt->{CriticalText}) {
$grefhMacros->{Text} = "$grefhOpt->{CriticalText}";
} elsif ($grefhOutput->{ExitCode} == $STATE_UNKNOWN and
defined $grefhOpt->{UnknownText}) {
$grefhMacros->{Text} = "$grefhOpt->{UnknownText}";
}
return $grefhMacros->{Text};
}
Mich wuerde gerne interessieren, ob der Debugger in die Subroutine SetExitText kommt, was bisher in den einzelnen Durchlaeufen nicht so zu scheinen mag!
Ich habe schon folgende Sachen versucht im Debugger:
X, x, s, n, V, v -> Leider alles ohne Ergebnis der einzelnen Variablen zum Zeitpunkt des Aufrufes!
Danke fuer jede Hilfe!