From 85cdd86ea76fcf89792ddc267aa7df1e01d72921 Mon Sep 17 00:00:00 2001 From: Mat Sugumaran Date: Fri, 24 Aug 2007 16:15:58 +0000 Subject: [PATCH] bug fix : gestion des hosts recu par IP ou hostname git-svn-id: http://svn.centreon.com/Plugins/Dev@3047 6bcd3966-0018-0410-8128-fd23d134de7e --- .../src/traps/plugins/genSnmpttConfFile | 269 +++++++++--------- .../src/traps/plugins/trapHandler | 16 +- 2 files changed, 144 insertions(+), 141 deletions(-) diff --git a/centreon-plugins/src/traps/plugins/genSnmpttConfFile b/centreon-plugins/src/traps/plugins/genSnmpttConfFile index 310d6f5f8..a76ce4b7f 100644 --- a/centreon-plugins/src/traps/plugins/genSnmpttConfFile +++ b/centreon-plugins/src/traps/plugins/genSnmpttConfFile @@ -1,134 +1,135 @@ -#! /usr/bin/perl -w -################################################################### -# Oreon is developped with GPL Licence 2.0 -# -# GPL License: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt -# -# Developped by : Mathavarajan Sugumaran - msugumaran@merethis.com -# Julien Mathis - Romain Le Merlus -# -################################################################### -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# For information : contact@merethis.com -#################################################################### -# -# Script init -# - -use strict; -use Getopt::Long; -use DBI; - -use vars qw($mysql_database_oreon $mysql_database_ods $mysql_host $mysql_user $mysql_passwd); -require "@INSTALL_DIR_OREON@/ODS/etc/conf.pm"; - -###################################### -## Get snmptt configuration files path -# - -sub getPath($) { - my $dbh = shift; - my $sth = $dbh->prepare("Select snmp_trapd_path_conf from general_opt"); - $sth->execute(); - my $path = $sth->fetchrow_array(); - $path .= "/" if (!($path =~ /\/$/)); - $path = "/etc/snmp/" if (!$path); - return $path; -} - -sub main() { - print "Generating SNMPTT configuration files...\n"; - my ($nbMan, $nbTraps) = (0,0); - - my $dsn = "dbi:mysql:$mysql_database_oreon"; - my $dbh = DBI->connect($dsn, $mysql_user, $mysql_passwd) or die "Echec de la connexion\n"; - my $confFiles_path = getPath($dbh); - - my $sth = $dbh->prepare("SELECT nagios_path_plugins FROM general_opt LIMIT 1"); - $sth->execute(); - my @conf = $sth->fetchrow_array(); - $sth->finish(); - my $NAGIOS_TRAPS = $conf[0]."traps/"; - - $sth = $dbh->prepare("SELECT id, name from traps_vendor"); - $sth->execute(); - my $snmpttIni = ""; - while (my ($man_id, $man_name) = $sth->fetchrow_array()) { - my $sth2 = $dbh->prepare("SELECT traps_name, traps_oid, traps_status, traps_args, traps_comments FROM traps WHERE manufacturer_id = '$man_id'"); - $sth2->execute(); - if (!open(FILE, "> ".$confFiles_path."snmptt-".$man_name.".conf")) { - print "Cannot open ".$confFiles_path."snmptt-".$man_name.".conf in write mode - Export aborded\n"; - exit; - } - $nbMan++ if ($sth2->rows); - while (my @values = $sth2->fetchrow_array()) { - $nbTraps++; - my $args = ""; - print FILE "EVENT ".$values[0]." ".$values[1]." \"Status Event\" ".$values[2]."\n"; - if (defined($values[3])) { - print FILE "FORMAT ".$values[3]."\n"; - }else { - $values[3] = "no output for trap!"; - } - print FILE "EXEC ".$NAGIOS_TRAPS."trapHandler \$aA \$o \"$values[3]\"\n"; - if (defined($values[4])) { - print FILE "SDESC\n".$values[4]; - if ($values[4] =~ /\n$/) { - print FILE "EDESC\n\n"; - } else { - print FILE "\nEDESC\n\n"; - } - } else { - print FILE "\n"; - } - } - close FILE; - $snmpttIni .= $confFiles_path."snmptt-".$man_name.".conf\n"; - $sth2->finish(); - } - print "$nbTraps traps for $nbMan manufacturers are defined.\n"; - $sth->finish(); - $dbh->disconnect(); - if (!open(FILE, $confFiles_path."snmptt.ini")) { - print "Cannot open ".$confFiles_path."snmptt.ini - Export Aborded\n"; - exit; - } - if (!open(TEMP, "> /tmp/snmptt.ini.tmp")) { - print "Cannot open /tmp/snmptt.ini.tmp in write mode - Export Aborded\n"; - exit; - } - my $continue = 1; - while ($continue == 1) { - my $line = ; - if ($line) { - if (!($line =~ /^snmptt\_conf\_files/)) { - print TEMP $line; - } else { - $continue = 0; - } - } else { - $continue = -1; - } - } - if (!$continue) { - print TEMP "snmptt_conf_files = <prepare("Select snmp_trapd_path_conf from general_opt"); + $sth->execute(); + my $path = $sth->fetchrow_array(); + $path .= "/" if (!($path =~ /\/$/)); + $path = "/etc/snmp/" if (!$path); + return $path; +} + +sub main() { + print "Generating SNMPTT configuration files...\n"; + my ($nbMan, $nbTraps) = (0,0); + + my $dsn = "dbi:mysql:$mysql_database_oreon"; + my $dbh = DBI->connect($dsn, $mysql_user, $mysql_passwd) or die "Echec de la connexion\n"; + my $confFiles_path = getPath($dbh); + + my $sth = $dbh->prepare("SELECT nagios_path_plugins FROM general_opt LIMIT 1"); + $sth->execute(); + my @conf = $sth->fetchrow_array(); + $sth->finish(); + my $NAGIOS_TRAPS = $conf[0]."traps/"; + + $sth = $dbh->prepare("SELECT id, name from traps_vendor"); + $sth->execute(); + my $snmpttIni = ""; + while (my ($man_id, $man_name) = $sth->fetchrow_array()) { + my $sth2 = $dbh->prepare("SELECT traps_name, traps_oid, traps_status, traps_args, traps_comments FROM traps WHERE manufacturer_id = '$man_id'"); + $sth2->execute(); + if (!open(FILE, "> ".$confFiles_path."snmptt-".$man_name.".conf")) { + print "Cannot open ".$confFiles_path."snmptt-".$man_name.".conf in write mode - Export aborded\n"; + exit; + } + $nbMan++ if ($sth2->rows); + while (my @values = $sth2->fetchrow_array()) { + $nbTraps++; + my $args = ""; + print FILE "EVENT ".$values[0]." ".$values[1]." \"Status Event\" ".$values[2]."\n"; + if (defined($values[3])) { + print FILE "FORMAT ".$values[3]."\n"; + }else { + $values[3] = "no output for trap!"; + } + print FILE "EXEC ".$NAGIOS_TRAPS."trapHandler \$aA \$A \$o \"$values[3]\"\n"; + if (defined($values[4])) { + print FILE "SDESC\n".$values[4]; + if ($values[4] =~ /\n$/) { + print FILE "EDESC\n\n"; + } else { + print FILE "\nEDESC\n\n"; + } + } else { + print FILE "\n"; + } + } + close FILE; + $snmpttIni .= $confFiles_path."snmptt-".$man_name.".conf\n"; + $sth2->finish(); + } + print "$nbTraps traps for $nbMan manufacturers are defined.\n"; + $sth->finish(); + $dbh->disconnect(); + if (!open(FILE, $confFiles_path."snmptt.ini")) { + print "Cannot open ".$confFiles_path."snmptt.ini - Export Aborded\n"; + exit; + } + if (!open(TEMP, "> /tmp/snmptt.ini.tmp")) { + print "Cannot open /tmp/snmptt.ini.tmp in write mode - Export Aborded\n"; + exit; + } + my $continue = 1; + while ($continue == 1) { + my $line = ; + if ($line) { + if (!($line =~ /^snmptt\_conf\_files/)) { + print TEMP $line; + } else { + $continue = 0; + } + } else { + $continue = -1; + } + } + if (!$continue) { + print TEMP "snmptt_conf_files = <prepare("SELECT host_name FROM host WHERE host_address='$_[1]' "); +sub get_hostinfos($$$){ + my $sth = $_[0]->prepare("SELECT host_name FROM host WHERE host_address='$_[1]' OR host_address='$_[2]'"); $sth->execute(); my @host; while (my $temp = $sth->fetchrow_array()) { @@ -140,14 +140,15 @@ sub get_servicename($$$) { ## GET HOSTNAME AND SERVICE DESCRIPTION # -sub getTrapsInfos($$$){ +sub getTrapsInfos($$$$){ my $ip = shift; + my $hostname = shift; my $oid = shift; my $arguments_line = shift; my $dsn = "dbi:mysql:$mysql_database_oreon"; my $dbh = DBI->connect($dsn, $mysql_user, $mysql_passwd) or die "Echec de la connexion\n"; - my @host = get_hostinfos($dbh, $ip); + my @host = get_hostinfos($dbh, $ip, $hostname); foreach(@host) { my $this_host = $_; my ($status, @servicename) = get_servicename($dbh, $oid, $_); @@ -171,7 +172,8 @@ sub getTrapsInfos($$$){ # if (scalar(@ARGV)) { my $ip = $ARGV[0]; - my $oid = $ARGV[1]; - my $arguments = $ARGV[2]; - getTrapsInfos($ip, $oid, $arguments); + my $hostname = $ARGV[1]; + my $oid = $ARGV[2]; + my $arguments = $ARGV[3]; + getTrapsInfos($ip, $hostname, $oid, $arguments); }