diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index bb48cbc7c9..33eb762c1a 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,3 +1,16 @@ +2013-05-14 Ramon Novoa + + * lib/PandoraFMS/NetworkServer.pm: Added the Pandora FMS's console MIB + to snmp* calls. + + * pandora_server_installer, + pandora_server.spec, + lib/PandoraFMS/Tools.pm, + lib/PandoraFMS/Config.pm, + Makefile.PL, + pandora_server.redhat.spec, + DEBIAN/control: Removed PERL's SNMP lib from the deps. + 2013-05-13 Ramon Novoa * lib/PandoraFMS/Tools.pm: Merged from 4.0 branch. Directly call diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 7aef440429..b0578dda84 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -6,5 +6,5 @@ Section: admin Installed-Size: 640 Maintainer: Miguel de Dios Homepage: http://pandorafms.org/ -Depends: perl (>= 5.8), libdbi-perl, libdbd-mysql-perl, libtime-format-perl, libnetaddr-ip-perl, libtime-format-perl, libxml-simple-perl, libxml-twig-perl, libhtml-parser-perl, snmp, snmpd, traceroute, xprobe2, nmap, sudo, libwww-perl, libsocket6-perl, libio-socket-inet6-perl, libsnmp-perl, snmp-mibs-downloader, libjson-perl +Depends: perl (>= 5.8), libdbi-perl, libdbd-mysql-perl, libtime-format-perl, libnetaddr-ip-perl, libtime-format-perl, libxml-simple-perl, libxml-twig-perl, libhtml-parser-perl, snmp, snmpd, traceroute, xprobe2, nmap, sudo, libwww-perl, libsocket6-perl, libio-socket-inet6-perl, snmp-mibs-downloader, libjson-perl Description: Pandora FMS is a monitoring system for big IT environments. It uses remote tests, or local agents to grab information. Pandora supports all standard OS (Linux, AIX, HP-UX, Solaris and Windows XP,2000/2003), and support multiple setups in HA enviroments. This is the server package. Server makes the remote checks and process information transfer by Pandora FMS agents to the server. diff --git a/pandora_server/Makefile.PL b/pandora_server/Makefile.PL index 64353127f8..a1427d89c2 100644 --- a/pandora_server/Makefile.PL +++ b/pandora_server/Makefile.PL @@ -17,7 +17,6 @@ WriteMakefile( PREREQ_PM => { NetAddr::IP => 0, DBI => 0, - SNMP => 0, threads::shared => 0, IO::Socket => 0, Socket6 => 0, diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index f034fb8ac6..b861781159 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -152,6 +152,9 @@ sub pandora_get_sharedconfig ($$) { # Log module configuration $pa_config->{"log_dir"} = pandora_get_tconfig_token ($dbh, 'log_dir', '/var/spool/pandora/data_in/log'); $pa_config->{"log_interval"} = pandora_get_tconfig_token ($dbh, 'log_interval', 3600); + + # Pandora FMS Console's attachment directory + $pa_config->{"attachment_dir"} = pandora_get_tconfig_token ($dbh, 'attachment_store', '/var/www/pandora_console/attachment'); } ########################################################################## diff --git a/pandora_server/lib/PandoraFMS/NetworkServer.pm b/pandora_server/lib/PandoraFMS/NetworkServer.pm index 5c929bad98..e789450904 100644 --- a/pandora_server/lib/PandoraFMS/NetworkServer.pm +++ b/pandora_server/lib/PandoraFMS/NetworkServer.pm @@ -27,7 +27,6 @@ use Thread::Semaphore; use IO::Socket::INET6; use HTML::Entities; use POSIX qw(strftime); -use SNMP; # Default lib dir for RPM and DEB packages use lib '/usr/lib/perl5'; @@ -285,6 +284,9 @@ sub pandora_snmp_get_command ($$$$$$$$$$$) { $snmp_target = $snmp_target.":".$snmp_port; } + # Pandora FMS's console MIB directory + my $mib_dir = $pa_config->{'attachment_dir'} . '/mibs'; + # On windows, we need the snmpget command from net-snmp, already present on win agent # the call is the same than in linux if (($OSNAME eq "MSWin32") || ($OSNAME eq "MSWin32-x64") || ($OSNAME eq "cygwin")){ @@ -298,9 +300,9 @@ sub pandora_snmp_get_command ($$$$$$$$$$$) { # by default LINUX/FreeBSD/Solaris calls else { if ($snmp_version ne "3"){ - $output = `$snmpget_cmd -v $snmp_version -r $snmp_retries -t $snmp_timeout -OUevqt -c '$snmp_community' $snmp_target $snmp_oid 2>/dev/null`; + $output = `$snmpget_cmd -M+"$mib_dir" -v $snmp_version -r $snmp_retries -t $snmp_timeout -OUevqt -c '$snmp_community' $snmp_target $snmp_oid 2>/dev/null`; } else { - $output = `$snmpget_cmd -v $snmp_version -r $snmp_retries -t $snmp_timeout -OUevqt -l $snmp3_security_level $snmp3_extra $snmp_target $snmp_oid 2>/dev/null`; + $output = `$snmpget_cmd -M+"$mib_dir" -v $snmp_version -r $snmp_retries -t $snmp_timeout -OUevqt -l $snmp3_security_level $snmp3_extra $snmp_target $snmp_oid 2>/dev/null`; } } @@ -345,7 +347,7 @@ sub pandora_query_snmp ($$$) { return (undef, 0) unless ($snmp_oid ne ''); if ($snmp_oid =~ m/[a-zA-Z]/) { - $snmp_oid = translate_obj ($dbh, $snmp_oid, ); + $snmp_oid = translate_obj ($pa_config, $dbh, $snmp_oid, ); # Could not translate OID, disable the module if (! defined ($snmp_oid) || $snmp_oid eq '') { diff --git a/pandora_server/lib/PandoraFMS/Tools.pm b/pandora_server/lib/PandoraFMS/Tools.pm index 5d31c7965e..4db82d766d 100644 --- a/pandora_server/lib/PandoraFMS/Tools.pm +++ b/pandora_server/lib/PandoraFMS/Tools.pm @@ -981,11 +981,15 @@ sub month_have_days($$) { ############################################################################### # Convert a text obj tag to an OID and update the module configuration. ############################################################################### -sub translate_obj ($$) { - my ($dbh, $obj) = @_; +sub translate_obj ($$$) { + my ($pa_config, $dbh, $obj) = @_; + + # Pandora FMS's console MIB directory + my $mib_dir = $pa_config->{'attachment_dir'} . '/mibs'; # Translate! - my $oid = `snmptranslate -On -mALL $obj 2>/dev/null`; + my $oid = `snmptranslate -On -mALL -M+"$mib_dir" $obj 2>/dev/null`; + if ($? != 0) { return undef; } diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 60aba78cbf..ff36364769 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -27,7 +27,7 @@ Requires: perl-DBI perl-DBD-mysql perl-libwww-perl Requires: perl-XML-Simple perl-XML-Twig net-snmp-utils Requires: perl-NetAddr-IP net-snmp net-tools Requires: perl-IO-Socket-INET6 perl-Socket6 -Requires: nmap wmic sudo net-snmp-perl perl-JSON +Requires: nmap wmic sudo perl-JSON %description Pandora FMS is a monitoring system for big IT environments. It uses remote tests, or local agents to grab information. Pandora supports all standard OS (Linux, AIX, HP-UX, Solaris and Windows XP,2000/2003), and support multiple setups in HA enviroments. diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 6cc3aa95c5..b098a732ac 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -25,7 +25,7 @@ Provides: %{name}-%{version} Requires: perl-DBI perl-DBD-mysql perl-libwww-perl Requires: perl-NetAddr-IP net-snmp net-tools perl-XML-Twig Requires: nmap wmic sudo perl-HTML-Tree perl-XML-Simple -Requires: perl-IO-Socket-INET6 perl-Socket6 perl-SNMP snmp-mibs perl-JSON +Requires: perl-IO-Socket-INET6 perl-Socket6 snmp-mibs perl-JSON %description diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index bcf5888913..fa113e0a8c 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -109,17 +109,17 @@ install () { echo "The complete installation guide is at: http://openideas.info/wiki/index.php?title=Pandora" echo " " echo "Debian-based distribution do:" - echo " # apt-get install snmp snmpd libjson-perllibio-socket-inet6-perl libsocket6-perl libxml-simple-perl libxml-twig-perl libnetaddr-ip-perl libdbi-perl libsnmp-perl libnetaddr-ip-perl libhtml-parser-perl wmi-client xprobe2 snmp-mibs-downloader" + echo " # apt-get install snmp snmpd libjson-perllibio-socket-inet6-perl libsocket6-perl libxml-simple-perl libxml-twig-perl libnetaddr-ip-perl libdbi-perl libnetaddr-ip-perl libhtml-parser-perl wmi-client xprobe2 snmp-mibs-downloader" echo " " echo "For CentOS / RHEL do: " echo " " - echo " # yum install perl-XML-Simple* perl-XML-Twig perl-JSON perl-IO-Socket* perl-Socket6 perl-Time-modules* perl-NetAddr-IP* perl-DateTime* perl-ExtUtils perl-DBI perl-SNMP nmap " + echo " # yum install perl-XML-Simple* perl-XML-Twig perl-JSON perl-IO-Socket* perl-Socket6 perl-Time-modules* perl-NetAddr-IP* perl-DateTime* perl-ExtUtils perl-DBI nmap " echo " " echo "For OpenSUSE / SLES do : " echo " " echo " # zypper install nmap perl-DBD-mysql perl-DBI perl-HTML-Parser perl-JSON perl-HTML-Encoding perl-HTML-Tree perl-NetAddr-IP perl-IO-Socket-INET6 perl-Socket6 -perl-TimeDate perl-XML-Simple perl-XML-Twig perl-libwww-perl mysql-client perl-SNMP" +perl-TimeDate perl-XML-Simple perl-XML-Twig perl-libwww-perl mysql-client" echo " " echo " You also will need to install (optionally) xprobe2 and wmiclient from rpm (download from our website)" echo " " @@ -134,12 +134,12 @@ perl-TimeDate perl-XML-Simple perl-XML-Twig perl-libwww-perl mysql-client perl-S echo " # make install" echo " " echo " Install following tools from ports. Don't use packages." - echo " Recommended: p5-DBI p5-NetAddr-IP p5-XML-Simple p5-XML-Twig p5-HTML-Parser p5-Net-SNMP p5-SNMP p5-DBD-mysql p5-Socket6 p5-IO-Socket-INET6" + echo " Recommended: p5-DBI p5-NetAddr-IP p5-XML-Simple p5-XML-Twig p5-HTML-Parser p5-DBD-mysql p5-Socket6 p5-IO-Socket-INET6" echo " Optional: nmap xprobe" echo " " echo "To get it from source through CPAN do" echo " " - echo " $ cpan Time::Local DBI SNMP Socket6 XML::Simple XML::Twig IO::Socket Time::HiRes NetAddr::IP HTML::Entities IO::Socket::INET6 JSON" + echo " $ cpan Time::Local DBI Socket6 XML::Simple XML::Twig IO::Socket Time::HiRes NetAddr::IP HTML::Entities IO::Socket::INET6 JSON" echo " " rm output else