git-svn-id: http://svn.centreon.com/Plugins/Dev@2439 6bcd3966-0018-0410-8128-fd23d134de7e
This commit is contained in:
Julien Mathis 2007-06-05 18:17:50 +00:00
parent 451363ef55
commit a4c850ab57
3 changed files with 277 additions and 0 deletions

142
src/traps/fill_trapDB.pl Normal file
View File

@ -0,0 +1,142 @@
#! /usr/bin/perl -w
###################################################################
# Oreon is developped with GPL Licence 2.0
#
# GPL License: http://www.gnu.org/licenses/gpl.txt
#
# Developped by : Mathavarajan Sugumaran - msugumaran@merethis.com
#
###################################################################
# 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;
#############################
## SET DATABASE CONFIGURATION
#
sub set_db {
require "@OREON_PATH@/ODS/etc/conf.pm"
my $dsn = "dbi:mysql:$mysql_database_oreon";
return $dsn, $mysql_user, $mysql_passwd;
}
#########################################
## TEST IF OID ALREADY EXISTS IN DATABASE
#
sub existsInDB($$) {
my ($dbh, $oid,$manuf) = @_;
my $sth = $dbh->prepare("SELECT traps_id from traps where traps_oid='$oid'");
$sth->execute();
if (defined($sth->fetchrow_array)) {
$sth->finish();
return 1;
}
$sth->finish();
return 0;
}
#####################################
## RETURN ENUM FROM STRING FOR STATUS
#
sub getStatus($$) {
my ($val, $type) = @_;
if ($val =~ /[I|i][N|n][F|f][O|o][R|r][M|m][A|a][T|t][I|i][O|o][N|n][A|a][L|l]|[N|n][O|o][R|r][M|m][A|a][L|l]/) {
return 0;
} elsif ($val =~ /^[W|w][A|a][R|r][N|n][I|i][N|n][G|g]|[M|m][I|i][N|n][O|o][R|r]$/) {
return 1;
} elsif ($val =~ /^[C|c][R|r][I|i][T|t][I|i][C|c][A|a][L|l]|[M|m][A|a][J|j][O|o][R|r]$/) {
return 2;
}
return 3;
}
################
## MAIN FUNCTION
#
sub main($$) {
my $manuf = $_[1];
my @db = set_db();
my $dbh = DBI->connect($db[0], $db[1], $db[2]) or die "DB connexion error\n";
if (!open(FILE, $_[0])) {
print "Cannot open configuration file : $_[0]\n";
exit;
}
my $last_oid = "";
while (<FILE>) {
if ($_ =~ /^EVENT\ ([a-zA-Z0-9]+)\ ([0-9\.]+)\ (\"[A-Za-z\ ]+\")\ ([a-zA-Z]+)/) {
my ($name,$oid,$type,$val) = ($1,$2,$3,$4);
if (existsInDB($dbh, $oid)) {
print "Trap oid : $name => $oid already exists in database\n";
$last_oid = $oid;
} else {
$val = getStatus($val,$type);
my $sth = $dbh->prepare("INSERT INTO `traps` (traps_name, traps_oid, traps_status, manufacturer_id) values ('$name', '$oid', '$val', '$manuf')");
$sth->execute();
$sth->finish();
$last_oid = $oid;
}
} elsif ($_ =~/^FORMAT\ (.*)/ && $last_oid ne "") {
my $query = "UPDATE `traps` set traps_args='$1' where traps_oid='$last_oid'";
my $sth = $dbh->prepare($query);
$sth->execute();
$sth->finish();
} elsif ($_ =~ /^SDESC(.*)/ && $last_oid ne "") {
my $temp_val = $1;
my $desc = "";
if (! ($temp_val =~ /\s+/)){
$temp_val =~ s/\"/\\\"/g;
$temp_val =~ s/\'/\\\'/g;
$desc .= $temp_val;
}
my $found = 0;
while (!$found) {
my $line = <FILE>;
if ($line =~ /^EDESC/) {
$found = 1;
} else {
$line =~ s/\"/\\\"/g;
$line =~ s/\'/\\\'/g;
$desc .= $line;
}
}
if ($desc ne "") {
my $sth = $dbh->prepare("UPDATE `traps` set traps_comments='$desc' where traps_oid='$last_oid'");
$sth->execute();
$sth->finish();
}
}
}
$dbh->disconnect();
}
Getopt::Long::Configure('bundling');
my ($opt_f, $opt_m);
GetOptions("f|file=s" => \$opt_f, "m|man=s" => \$opt_m);
if (!$opt_f || !$opt_m) {
print "fill_trapDB.pl : Usage : ./fill_trapDB.pl -f configuration_file -m manufacturer_id\n";
exit;
}
main($opt_f,$opt_m);
exit();

View File

@ -0,0 +1,134 @@
#! /usr/bin/perl -w
#
# $Id: genSnmpttConfFile.pl,v 1.0 2007/05/15 17:21:49 Sugumaran Mat $
#
# Oreon's plugins are developped with GPL Licence :
# http://www.fsf.org/licenses/gpl.txt
# Developped by : Sugumaran Mathavarajan
#
# The Software is provided to you AS IS and WITH ALL FAULTS.
# OREON makes no representation and gives no warranty whatsoever,
# whether express or implied, and without limitation, with regard to the quality,
# safety, contents, performance, merchantability, non-infringement or suitability for
# any particular or intended purpose of the Software found on the OREON web site.
# In no event will OREON be liable for any direct, indirect, punitive, special,
# incidental or consequential damages however they may arise and even if OREON has
# been previously advised of the possibility of such damages.
use strict;
use Getopt::Long;
use DBI;
my $NAGIOS_TRAPS = "/srv/nagios/libexec/traps";
#############################
## SET DATABASE CONFIGURATION
#
sub set_db
{
my $db_name = "oreon"; ## name of your database for oreon
my $login = "root"; ## user of your database
my $mdp = "mysql-password"; ## password for this user
my $dsn = "dbi:mysql:$db_name";
return $dsn, $login, $mdp;
}
######################################
## Get snmptt configuration files path
#
sub getPath($) {
my $dbh = shift;
my $query = "Select snmp_trapd_path_conf from general_opt";
my $sth = $dbh->prepare($query);
$sth->execute;
my $path = $sth->fetchrow_array;
if (!($path =~ /\/$/)) {
$path .= "/";
}
if (!$path) {
$path = "/etc/snmp/";
}
return $path;
}
sub main() {
print "Generating SNMPTT configuration files...\n";
my ($nbMan, $nbTraps) = (0,0);
my @db = set_db();
my $dbh = DBI->connect($db[0], $db[1], $db[2]) or die "Echec de la connexion mysql\n";
my $confFiles_path = getPath($dbh);
my $query = "SELECT id, name from inventory_manufacturer";
my $sth = $dbh->prepare($query);
$sth->execute;
my $snmpttIni = "";
while (my ($man_id, $man_name) = $sth->fetchrow_array) {
my $query2 = "SELECT traps_name, traps_oid, traps_status, traps_args, traps_comments";
$query2 .= " from traps where manufacturer_id='$man_id'";
my $sth2 = $dbh->prepare($query2);
$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;
}
if ($sth2->rows) {
$nbMan++;
}
while (my @values = $sth2->fetchrow_array) {
$nbTraps++;
print FILE "EVENT ".$values[0]." ".$values[1]." \"Status Event\" ".$values[2]."\n";
if (defined($values[3])) {
print FILE "FORMAT ".$values[3]."\n";
}
print FILE "EXEC ".$NAGIOS_TRAPS."/trapHandler.pl \$aA \$o \"\$*\"\n";
if (defined($values[4])) {
print FILE "SDESC\n";
print FILE $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 = <FILE>;
if ($line) {
if (!($line =~ /^snmptt\_conf\_files/)) {
print TEMP $line;
}else {
$continue = 0;
}
}else {
$continue = -1;
}
}
if (!$continue) {
print TEMP "snmptt_conf_files = <<END\n";
print TEMP $snmpttIni."END\n";
my $command = "mv /tmp/snmptt.ini.tmp ".$confFiles_path."snmptt.ini";
my $mv = `$command`;
print "SNMPTT configuration files generated.\n";
}else {
print "Couldn't export ".$confFiles_path."snmptt.ini, please put these lines at the end of file snmptt.ini :\n";
print "snmptt_conf_files = <<END\n".$snmpttIni."END\n";
}
}
main;

View File

@ -29,6 +29,7 @@ use DBI;
############################# #############################
## SET DATABASE CONFIGURATION ## SET DATABASE CONFIGURATION
# #
sub set_db { sub set_db {
require "@OREON_PATH@/ODS/etc/conf.pm" require "@OREON_PATH@/ODS/etc/conf.pm"
my $dsn = "dbi:mysql:$mysql_database_oreon"; my $dsn = "dbi:mysql:$mysql_database_oreon";