#!/usr/bin/perl # (c) Sancho Lerena 2010 # Specific Pandora FMS trap collector for Compaq Hardware # Parameter list: list_event, code with TRAP VALUES to match # module_name: Name of the module generated. my @list_event = ('22013', '22042', '22039'); my $module_name = "evento_enclosure"; use POSIX qw(setsid strftime); sub show_help { print "\nSpecific Pandora FMS trap collector for compaq Hardware\n"; print "(c) Sancho Lerena 2010 \n"; print "Usage:\n\n"; print " compaq_chassis_trap_manager.pl \n\n"; exit; } sub writexml { my ($hostname, $xmlmessage ) = @_; my $file = "/var/spool/pandora/data_in/$hostname.".rand(1000).".data"; # my $file = "/tmp/compaq.debug"; open (FILE, ">> $file") or die "[FATAL] Cannot write to XML '$file'"; print FILE $xmlmessage; close (FILE); } if ($#ARGV == -1){ show_help(); } $chunk = ""; # First parameter is always destination host for virtual server $target_host = $ARGV[0]; foreach $argnum (1 .. $#ARGV) { if ($chunk ne ""){ $chunk .= " "; } $chunk .= $ARGV[$argnum]; } my $hostname = ""; my $now = strftime ("%Y-%m-%d %H:%M:%S", localtime()); my $xmldata = ""; my $blade = "N/A"; my $index_pos = 1; my $enclosure = "N/A"; my $rack = "N/A"; # Get position if ($chunk =~ m/.1.3.6.1.4.1.232.22.2.4.1.1.1.8.([0-9])*\s/){ $index_pos = $1; } # Get blade if ($chunk =~ m/.1.3.6.1.4.1.232.22.2.4.1.1.1.4.$index_pos \= STRING\: ([A-Za-z0-9\-\.]*)\s/){ $blade = $1; } # Get enclosure if ($chunk =~ m/.1.3.6.1.4.1.232.22.2.4.1.1.1.5.$index_pos \= STRING\: ([A-Za-z0-9\-\.]*)\s/){ $enclosure = $1; } # Get rack if ($chunk =~ m/1.3.6.1.4.1.232.22.2.2.1.1.2.1 \= STRING\: ([A-Za-z0-9\-\.]*)\s\.1/){ $rack = $1; } my $event_code = ""; foreach $argnum (0 .. $#list_event) { if ($chunk =~ m/\s\.($list_event[$argnum])\s/){ $text = chunk; $event_code = $1; } } $xmldata .= "$module_name_$event_codeasync_string\n"; $xmldata .= "\n"; writexml ($target_host, $xmldata);