mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-29 00:24:46 +02:00
Compatibility SNMPv3
This commit is contained in:
parent
18f94a0b8e
commit
8b5ecd0bdc
@ -13,8 +13,9 @@ my $Version='1.10';
|
|||||||
# help : ./check_snmp_process -h
|
# help : ./check_snmp_process -h
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use Net::SNMP;
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
|
require "@NAGIOS_PLUGINS@/Centreon/SNMP/Utils.pm";
|
||||||
|
|
||||||
|
|
||||||
############### BASE DIRECTORY FOR TEMP FILE ########
|
############### BASE DIRECTORY FOR TEMP FILE ########
|
||||||
my $o_base_dir="/tmp/tmp_Nagios_proc.";
|
my $o_base_dir="/tmp/tmp_Nagios_proc.";
|
||||||
@ -26,6 +27,16 @@ my $delta_of_time_to_make_average=300; # 5minutes by default
|
|||||||
my $TIMEOUT = 15;
|
my $TIMEOUT = 15;
|
||||||
my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
|
my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
|
||||||
|
|
||||||
|
my %OPTION = (
|
||||||
|
"host" => undef,
|
||||||
|
"snmp-community" => "public", "snmp-version" => 1, "snmp-port" => 161,
|
||||||
|
"snmp-auth-key" => undef, "snmp-auth-user" => undef, "snmp-auth-password" => undef, "snmp-auth-protocol" => "MD5",
|
||||||
|
"snmp-priv-key" => undef, "snmp-priv-password" => undef, "snmp-priv-protocol" => "DES",
|
||||||
|
"maxrepetitions" => undef,
|
||||||
|
"64-bits" => undef,
|
||||||
|
);
|
||||||
|
my $session_params;
|
||||||
|
|
||||||
# SNMP Datas
|
# SNMP Datas
|
||||||
my $process_table= '1.3.6.1.2.1.25.4.2.1';
|
my $process_table= '1.3.6.1.2.1.25.4.2.1';
|
||||||
my $index_table = '1.3.6.1.2.1.25.4.2.1.1';
|
my $index_table = '1.3.6.1.2.1.25.4.2.1.1';
|
||||||
@ -37,12 +48,6 @@ my $proc_cpu_table = '1.3.6.1.2.1.25.5.1.1.1'; # Centi sec of CPU
|
|||||||
my $proc_run_state = '1.3.6.1.2.1.25.4.2.1.7';
|
my $proc_run_state = '1.3.6.1.2.1.25.4.2.1.7';
|
||||||
|
|
||||||
# Globals
|
# Globals
|
||||||
|
|
||||||
|
|
||||||
my $o_host = undef; # hostname
|
|
||||||
my $o_community =undef; # community
|
|
||||||
my $o_port = 161; # port
|
|
||||||
my $o_version2 = undef; #use snmp v2c
|
|
||||||
my $o_descr = undef; # description filter
|
my $o_descr = undef; # description filter
|
||||||
my $o_warn = 0; # warning limit
|
my $o_warn = 0; # warning limit
|
||||||
my @o_warnL= undef; # warning limits (min,max)
|
my @o_warnL= undef; # warning limits (min,max)
|
||||||
@ -58,15 +63,6 @@ my $o_get_all= undef; # get all tables at once
|
|||||||
my $o_param= undef; # Add process parameters for selection
|
my $o_param= undef; # Add process parameters for selection
|
||||||
my $o_perf= undef; # Add performance output
|
my $o_perf= undef; # Add performance output
|
||||||
my $o_timeout= 5; # Default 5s Timeout
|
my $o_timeout= 5; # Default 5s Timeout
|
||||||
# SNMP V3 specific
|
|
||||||
my $o_login= undef; # snmp v3 login
|
|
||||||
my $o_passwd= undef; # snmp v3 passwd
|
|
||||||
my $v3protocols=undef; # V3 protocol list.
|
|
||||||
my $o_authproto='md5'; # Auth protocol
|
|
||||||
my $o_privproto='des'; # Priv protocol
|
|
||||||
my $o_privpass= undef; # priv password
|
|
||||||
# SNMP Message size parameter (Makina Corpus contrib)
|
|
||||||
my $o_octetlength=undef;
|
|
||||||
# Memory & CPU
|
# Memory & CPU
|
||||||
my $o_mem= undef; # checks memory (max)
|
my $o_mem= undef; # checks memory (max)
|
||||||
my @o_memL= undef; # warn and crit level for mem
|
my @o_memL= undef; # warn and crit level for mem
|
||||||
@ -103,8 +99,7 @@ sub read_file {
|
|||||||
my (@last_values,@file_values,$i);
|
my (@last_values,@file_values,$i);
|
||||||
open(FILE,"<".$traffic_file) || return (1,0,0);
|
open(FILE,"<".$traffic_file) || return (1,0,0);
|
||||||
|
|
||||||
while($ligne = <FILE>)
|
while($ligne = <FILE>) {
|
||||||
{
|
|
||||||
chomp($ligne);
|
chomp($ligne);
|
||||||
@file_values = split(":",$ligne);
|
@file_values = split(":",$ligne);
|
||||||
#verb("@file_values");
|
#verb("@file_values");
|
||||||
@ -159,13 +154,6 @@ sub help {
|
|||||||
Login and auth password for snmpv3 authentication
|
Login and auth password for snmpv3 authentication
|
||||||
If no priv password exists, implies AuthNoPriv
|
If no priv password exists, implies AuthNoPriv
|
||||||
-2 : use snmp v2c
|
-2 : use snmp v2c
|
||||||
-X, --privpass=PASSWD
|
|
||||||
Priv password for snmpv3 (AuthPriv protocol)
|
|
||||||
-L, --protocols=<authproto>,<privproto>
|
|
||||||
<authproto> : Authentication protocol (md5|sha : default md5)
|
|
||||||
<privproto> : Priv protocole (des|aes : default des)
|
|
||||||
-p, --port=PORT
|
|
||||||
SNMP port (Default 161)
|
|
||||||
-n, --name=NAME
|
-n, --name=NAME
|
||||||
Name of the process (regexp)
|
Name of the process (regexp)
|
||||||
No trailing slash !
|
No trailing slash !
|
||||||
@ -205,10 +193,6 @@ Notes on warning and critical :
|
|||||||
In some cases, it is necessary to get all data at once because
|
In some cases, it is necessary to get all data at once because
|
||||||
process die very frequently.
|
process die very frequently.
|
||||||
This option eats bandwidth an cpu (for remote host) at breakfast.
|
This option eats bandwidth an cpu (for remote host) at breakfast.
|
||||||
-o, --octetlength=INTEGER
|
|
||||||
max-size of the SNMP message, usefull in case of Too Long responses.
|
|
||||||
Be carefull with network filters. Range 484 - 65535, default are
|
|
||||||
usually 1472,1452,1460 or 1440.
|
|
||||||
-t, --timeout=INTEGER
|
-t, --timeout=INTEGER
|
||||||
timeout for SNMP in seconds (Default: 5)
|
timeout for SNMP in seconds (Default: 5)
|
||||||
-V, --version
|
-V, --version
|
||||||
@ -229,15 +213,22 @@ sub verb { my $t=shift; print $t,"\n" if defined($o_verb) ; }
|
|||||||
sub check_options {
|
sub check_options {
|
||||||
Getopt::Long::Configure ("bundling");
|
Getopt::Long::Configure ("bundling");
|
||||||
GetOptions(
|
GetOptions(
|
||||||
|
"H|hostname|host=s" => \$OPTION{'host'},
|
||||||
|
"C|community=s" => \$OPTION{'snmp-community'},
|
||||||
|
"snmp|snmp-version=s" => \$OPTION{'snmp-version'},
|
||||||
|
"p|port|P|snmpport|snmp-port=i" => \$OPTION{'snmp-port'},
|
||||||
|
"l|login|username=s" => \$OPTION{'snmp-auth-user'},
|
||||||
|
"x|passwd|authpassword|password=s" => \$OPTION{'snmp-auth-password'},
|
||||||
|
"k|authkey=s" => \$OPTION{'snmp-auth-key'},
|
||||||
|
"authprotocol=s" => \$OPTION{'snmp-auth-protocol'},
|
||||||
|
"privpassword=s" => \$OPTION{'snmp-priv-password'},
|
||||||
|
"privkey=s" => \$OPTION{'snmp-priv-key'},
|
||||||
|
"privprotocol=s" => \$OPTION{'snmp-priv-protocol'},
|
||||||
|
"maxrepetitions=s" => \$OPTION{'maxrepetitions'},
|
||||||
|
"64-bits" => \$OPTION{'64-bits'},
|
||||||
|
|
||||||
'v' => \$o_verb, 'verbose' => \$o_verb,
|
'v' => \$o_verb, 'verbose' => \$o_verb,
|
||||||
'h' => \$o_help, 'help' => \$o_help,
|
'h' => \$o_help, 'help' => \$o_help,
|
||||||
'H:s' => \$o_host, 'hostname:s' => \$o_host,
|
|
||||||
'p:i' => \$o_port, 'port:i' => \$o_port,
|
|
||||||
'C:s' => \$o_community, 'community:s' => \$o_community,
|
|
||||||
'l:s' => \$o_login, 'login:s' => \$o_login,
|
|
||||||
'x:s' => \$o_passwd, 'passwd:s' => \$o_passwd,
|
|
||||||
'X:s' => \$o_privpass, 'privpass:s' => \$o_privpass,
|
|
||||||
'L:s' => \$v3protocols, 'protocols:s' => \$v3protocols,
|
|
||||||
'c:s' => \$o_crit, 'critical:s' => \$o_crit,
|
'c:s' => \$o_crit, 'critical:s' => \$o_crit,
|
||||||
'w:s' => \$o_warn, 'warn:s' => \$o_warn,
|
'w:s' => \$o_warn, 'warn:s' => \$o_warn,
|
||||||
't:i' => \$o_timeout, 'timeout:i' => \$o_timeout,
|
't:i' => \$o_timeout, 'timeout:i' => \$o_timeout,
|
||||||
@ -247,8 +238,6 @@ sub check_options {
|
|||||||
'm:s' => \$o_mem, 'memory:s' => \$o_mem,
|
'm:s' => \$o_mem, 'memory:s' => \$o_mem,
|
||||||
'a' => \$o_mem_avg, 'average' => \$o_mem_avg,
|
'a' => \$o_mem_avg, 'average' => \$o_mem_avg,
|
||||||
'u:s' => \$o_cpu, 'cpu' => \$o_cpu,
|
'u:s' => \$o_cpu, 'cpu' => \$o_cpu,
|
||||||
'2' => \$o_version2, 'v2c' => \$o_version2,
|
|
||||||
'o:i' => \$o_octetlength, 'octetlength:i' => \$o_octetlength,
|
|
||||||
'g' => \$o_get_all, 'getall' => \$o_get_all,
|
'g' => \$o_get_all, 'getall' => \$o_get_all,
|
||||||
'A' => \$o_param, 'param' => \$o_param,
|
'A' => \$o_param, 'param' => \$o_param,
|
||||||
'F' => \$o_perf, 'perfout' => \$o_perf,
|
'F' => \$o_perf, 'perfout' => \$o_perf,
|
||||||
@ -258,23 +247,12 @@ sub check_options {
|
|||||||
if (defined ($o_help)) { help(); exit $ERRORS{"UNKNOWN"}};
|
if (defined ($o_help)) { help(); exit $ERRORS{"UNKNOWN"}};
|
||||||
if (defined($o_version)) { p_version(); exit $ERRORS{"UNKNOWN"}};
|
if (defined($o_version)) { p_version(); exit $ERRORS{"UNKNOWN"}};
|
||||||
# check snmp information
|
# check snmp information
|
||||||
if ( !defined($o_community) && (!defined($o_login) || !defined($o_passwd)) )
|
($session_params) = Centreon::SNMP::Utils::check_snmp_options($ERRORS{'UNKNOWN'}, \%OPTION);
|
||||||
{ print "Put snmp login info!\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
|
||||||
if ((defined($o_login) || defined($o_passwd)) && (defined($o_community) || defined($o_version2)) )
|
|
||||||
{ print "Can't mix snmp v1,2c,3 protocols!\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
|
||||||
if (defined ($v3protocols)) {
|
|
||||||
if (!defined($o_login)) { print "Put snmp V3 login info with protocols!\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
|
||||||
my @v3proto=split(/,/,$v3protocols);
|
|
||||||
if ((defined ($v3proto[0])) && ($v3proto[0] ne "")) {$o_authproto=$v3proto[0]; } # Auth protocol
|
|
||||||
if (defined ($v3proto[1])) {$o_privproto=$v3proto[1]; } # Priv protocol
|
|
||||||
if ((defined ($v3proto[1])) && (!defined($o_privpass))) {
|
|
||||||
print "Put snmp V3 priv login info with priv protocols!\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
|
||||||
}
|
|
||||||
if (defined($o_timeout) && (isnotnum($o_timeout) || ($o_timeout < 2) || ($o_timeout > 60)))
|
if (defined($o_timeout) && (isnotnum($o_timeout) || ($o_timeout < 2) || ($o_timeout > 60)))
|
||||||
{ print "Timeout must be >1 and <60 !\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
{ print "Timeout must be >1 and <60 !\n"; print_usage(); exit $ERRORS{"UNKNOWN"}}
|
||||||
if (!defined($o_timeout)) {$o_timeout=5;}
|
if (!defined($o_timeout)) {$o_timeout=5;}
|
||||||
# Check compulsory attributes
|
# Check compulsory attributes
|
||||||
if ( ! defined($o_descr) || ! defined($o_host) ) { print_usage(); exit $ERRORS{"UNKNOWN"}};
|
if ( ! defined($o_descr) ) { print_usage(); exit $ERRORS{"UNKNOWN"}};
|
||||||
@o_warnL=split(/,/,$o_warn);
|
@o_warnL=split(/,/,$o_warn);
|
||||||
@o_critL=split(/,/,$o_crit);
|
@o_critL=split(/,/,$o_crit);
|
||||||
verb("$o_warn $o_crit $#o_warnL $#o_critL");
|
verb("$o_warn $o_crit $#o_warnL $#o_critL");
|
||||||
@ -314,10 +292,6 @@ sub check_options {
|
|||||||
if ($o_cpuL[0]>$o_cpuL[1])
|
if ($o_cpuL[0]>$o_cpuL[1])
|
||||||
{print "Warning must be <= Critical for cpu!\n";print_usage(); exit $ERRORS{"UNKNOWN"}};
|
{print "Warning must be <= Critical for cpu!\n";print_usage(); exit $ERRORS{"UNKNOWN"}};
|
||||||
}
|
}
|
||||||
#### octet length checks
|
|
||||||
if (defined ($o_octetlength) && (isnotnum($o_octetlength) || $o_octetlength > 65535 || $o_octetlength < 484 )) {
|
|
||||||
print "octet lenght must be < 65535 and > 484\n";print_usage(); exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
########## MAIN #######
|
########## MAIN #######
|
||||||
@ -333,139 +307,33 @@ if (defined($TIMEOUT)) {
|
|||||||
alarm ($o_timeout+10);
|
alarm ($o_timeout+10);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Connect to host
|
my $session = Centreon::SNMP::Utils::connection($ERRORS{'UNKNOWN'}, $session_params);
|
||||||
my ($session,$error);
|
|
||||||
if ( defined($o_login) && defined($o_passwd)) {
|
|
||||||
# SNMPv3 login
|
|
||||||
if (!defined ($o_privpass)) {
|
|
||||||
verb("SNMPv3 AuthNoPriv login : $o_login, $o_authproto");
|
|
||||||
($session, $error) = Net::SNMP->session(
|
|
||||||
-hostname => $o_host,
|
|
||||||
-version => '3',
|
|
||||||
-port => $o_port,
|
|
||||||
-username => $o_login,
|
|
||||||
-authpassword => $o_passwd,
|
|
||||||
-authprotocol => $o_authproto,
|
|
||||||
-timeout => $o_timeout
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
verb("SNMPv3 AuthPriv login : $o_login, $o_authproto, $o_privproto");
|
|
||||||
($session, $error) = Net::SNMP->session(
|
|
||||||
-hostname => $o_host,
|
|
||||||
-version => '3',
|
|
||||||
-username => $o_login,
|
|
||||||
-port => $o_port,
|
|
||||||
-authpassword => $o_passwd,
|
|
||||||
-authprotocol => $o_authproto,
|
|
||||||
-privpassword => $o_privpass,
|
|
||||||
-privprotocol => $o_privproto,
|
|
||||||
-timeout => $o_timeout
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (defined ($o_version2)) {
|
|
||||||
# SNMPv2 Login
|
|
||||||
($session, $error) = Net::SNMP->session(
|
|
||||||
-hostname => $o_host,
|
|
||||||
-version => 2,
|
|
||||||
-community => $o_community,
|
|
||||||
-port => $o_port,
|
|
||||||
-timeout => $o_timeout
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
# SNMPV1 login
|
|
||||||
($session, $error) = Net::SNMP->session(
|
|
||||||
-hostname => $o_host,
|
|
||||||
-community => $o_community,
|
|
||||||
-port => $o_port,
|
|
||||||
-timeout => $o_timeout
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!defined($session)) {
|
|
||||||
printf("ERROR: %s.\n", $error);
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined($o_octetlength)) {
|
|
||||||
my $oct_resultat=undef;
|
|
||||||
my $oct_test= $session->max_msg_size();
|
|
||||||
verb(" actual max octets:: $oct_test");
|
|
||||||
$oct_resultat = $session->max_msg_size($o_octetlength);
|
|
||||||
if (!defined($oct_resultat)) {
|
|
||||||
printf("ERROR: Session settings : %s.\n", $session->error);
|
|
||||||
$session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
$oct_test= $session->max_msg_size();
|
|
||||||
verb(" new max octets:: $oct_test");
|
|
||||||
}
|
|
||||||
|
|
||||||
# Look for process in name or path name table
|
# Look for process in name or path name table
|
||||||
my $resultat=undef;
|
my $resultat=undef;
|
||||||
my %result_cons=();
|
my %result_cons=();
|
||||||
my ($getall_run,$getall_cpu,$getall_mem)=(undef,undef,undef);
|
my ($getall_run,$getall_cpu,$getall_mem)=(undef,undef,undef);
|
||||||
if ( !defined ($o_path) ) {
|
if ( !defined ($o_path) ) {
|
||||||
$resultat = (Net::SNMP->VERSION < 4) ?
|
$resultat = Centreon::SNMP::Utils::get_snmp_table($run_name_table, $session, $ERRORS{'UNKNOWN'}, \%OPTION);
|
||||||
$session->get_table($run_name_table)
|
|
||||||
: $session->get_table(Baseoid => $run_name_table);
|
|
||||||
} else {
|
} else {
|
||||||
$resultat = (Net::SNMP->VERSION < 4) ?
|
$resultat = Centreon::SNMP::Utils::get_snmp_table($run_path_table, $session, $ERRORS{'UNKNOWN'}, \%OPTION);
|
||||||
$session->get_table($run_path_table)
|
|
||||||
:$session->get_table(Baseoid => $run_path_table);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!defined($resultat)) {
|
|
||||||
printf("ERROR: Process name table : %s.\n", $session->error);
|
|
||||||
$session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
my $resultat_param=undef;
|
my $resultat_param=undef;
|
||||||
if (defined($o_param)) { # Get parameter table too
|
if (defined($o_param)) { # Get parameter table too
|
||||||
$resultat_param = (Net::SNMP->VERSION < 4) ?
|
$resultat_param = Centreon::SNMP::Utils::get_snmp_table($run_param_table, $session, $ERRORS{'UNKNOWN'}, \%OPTION);
|
||||||
$session->get_table($run_param_table)
|
|
||||||
:$session->get_table(Baseoid => $run_param_table);
|
|
||||||
if (!defined($resultat_param)) {
|
|
||||||
printf("ERROR: Process param table : %s.\n", $session->error);
|
|
||||||
$session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined ($o_get_all)) {
|
if (defined ($o_get_all)) {
|
||||||
$getall_run = (Net::SNMP->VERSION < 4) ?
|
$getall_run = Centreon::SNMP::Utils::get_snmp_table($proc_run_state, $session, $ERRORS{'UNKNOWN'}, \%OPTION);
|
||||||
$session->get_table($proc_run_state )
|
|
||||||
:$session->get_table(Baseoid => $proc_run_state );
|
|
||||||
if (!defined($getall_run)) {
|
|
||||||
printf("ERROR: Process run table : %s.\n", $session->error);
|
|
||||||
$session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
foreach my $key ( keys %$getall_run) {
|
foreach my $key ( keys %$getall_run) {
|
||||||
$result_cons{$key}=$$getall_run{$key};
|
$result_cons{$key}=$$getall_run{$key};
|
||||||
}
|
}
|
||||||
$getall_cpu = (Net::SNMP->VERSION < 4) ?
|
$getall_cpu = Centreon::SNMP::Utils::get_snmp_table($proc_cpu_table, $session, $ERRORS{'UNKNOWN'}, \%OPTION);
|
||||||
$session->get_table($proc_cpu_table)
|
|
||||||
: $session->get_table(Baseoid => $proc_cpu_table);
|
|
||||||
if (!defined($getall_cpu)) {
|
|
||||||
printf("ERROR: Process cpu table : %s.\n", $session->error);
|
|
||||||
$session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
foreach my $key ( keys %$getall_cpu) {
|
foreach my $key ( keys %$getall_cpu) {
|
||||||
$result_cons{$key}=$$getall_cpu{$key};
|
$result_cons{$key}=$$getall_cpu{$key};
|
||||||
}
|
}
|
||||||
$getall_mem = (Net::SNMP->VERSION < 4) ?
|
$getall_mem = Centreon::SNMP::Utils::get_snmp_table($proc_mem_table, $session, $ERRORS{'UNKNOWN'}, \%OPTION);
|
||||||
$session->get_table($proc_mem_table)
|
|
||||||
: $session->get_table(Baseoid => $proc_mem_table);
|
|
||||||
if (!defined($getall_mem)) {
|
|
||||||
printf("ERROR: Process memory table : %s.\n", $session->error);
|
|
||||||
$session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
foreach my $key ( keys %$getall_mem) {
|
foreach my $key ( keys %$getall_mem) {
|
||||||
$result_cons{$key}=$$getall_mem{$key};
|
$result_cons{$key}=$$getall_mem{$key};
|
||||||
}
|
}
|
||||||
@ -539,30 +407,17 @@ if (!defined ($o_get_all)) {
|
|||||||
$toid[$i]=$oids[$i+$tmp_index];
|
$toid[$i]=$oids[$i+$tmp_index];
|
||||||
#verb("$i : $toid[$i] : $oids[$i+$tmp_index]");
|
#verb("$i : $toid[$i] : $oids[$i+$tmp_index]");
|
||||||
}
|
}
|
||||||
$tmp_result = (Net::SNMP->VERSION < 4) ?
|
$tmp_result = Centreon::SNMP::Utils::get_snmp_leef(\@toid, $session, $ERRORS{'UNKNOWN'});
|
||||||
$session->get_request(@toid)
|
|
||||||
: $session->get_request(Varbindlist => \@toid);
|
|
||||||
if (!defined($tmp_result)) { printf("ERROR: running table : %s.\n", $session->error); $session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
foreach (@toid) { $result_cons{$_}=$$tmp_result{$_}; }
|
foreach (@toid) { $result_cons{$_}=$$tmp_result{$_}; }
|
||||||
$tmp_count-=$tmp_num;
|
$tmp_count-=$tmp_num;
|
||||||
$tmp_index+=$tmp_num;
|
$tmp_index+=$tmp_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$result = (Net::SNMP->VERSION < 4) ?
|
my $tmp_result = Centreon::SNMP::Utils::get_snmp_leef(\@oids, $session, $ERRORS{'UNKNOWN'});
|
||||||
$session->get_request(@oids)
|
foreach (@oids) {$result_cons{$_}=$$tmp_result{$_};}
|
||||||
: $session->get_request(Varbindlist => \@oids);
|
|
||||||
if (!defined($result)) { printf("ERROR: running table : %s.\n", $session->error); $session->close;
|
|
||||||
exit $ERRORS{"UNKNOWN"};
|
|
||||||
}
|
|
||||||
foreach (@oids) {$result_cons{$_}=$$result{$_};}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$session->close;
|
|
||||||
|
|
||||||
#Check if process are in running or runnable state
|
#Check if process are in running or runnable state
|
||||||
for (my $i=0; $i< $num_int; $i++) {
|
for (my $i=0; $i< $num_int; $i++) {
|
||||||
my $state=$result_cons{$proc_run_state . "." . $tindex[$i]};
|
my $state=$result_cons{$proc_run_state . "." . $tindex[$i]};
|
||||||
@ -628,7 +483,7 @@ if (defined ($o_cpu) ) {
|
|||||||
#### Read file
|
#### Read file
|
||||||
$temp_file_name=$o_descr;
|
$temp_file_name=$o_descr;
|
||||||
$temp_file_name =~ s/ /_/g;
|
$temp_file_name =~ s/ /_/g;
|
||||||
$temp_file_name = $o_base_dir . $o_host ."." . $temp_file_name;
|
$temp_file_name = $o_base_dir . $OPTION{'host'} ."." . $temp_file_name;
|
||||||
# First, read entire file
|
# First, read entire file
|
||||||
my @ret_array=read_file($temp_file_name,$n_items_check);
|
my @ret_array=read_file($temp_file_name,$n_items_check);
|
||||||
$return = shift(@ret_array);
|
$return = shift(@ret_array);
|
||||||
@ -714,4 +569,3 @@ if ($final_status==2) { exit $ERRORS{"CRITICAL"};}
|
|||||||
if ($final_status==1) { exit $ERRORS{"WARNING"};}
|
if ($final_status==1) { exit $ERRORS{"WARNING"};}
|
||||||
if ($final_status==3) { exit $ERRORS{"UNKNOWN"};}
|
if ($final_status==3) { exit $ERRORS{"UNKNOWN"};}
|
||||||
exit $ERRORS{"OK"};
|
exit $ERRORS{"OK"};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user