#! /usr/bin/perl ############################################################################### # # PROGRAM NAME: # # DESCRIPTION: # # MODIFICATION HISTORY: # # DATE PROG. # DD-MMM-YYYY INIT. SIR MODIFICATION DESCRIPTION #------------------------------------------------------------------------------ # # ############################################################################### ############################################################################### # # MODULE # ############################################################################### #use strict; use Carp; use SNMP::Multi; use DBI; my $sth1 = undef; my @row = undef; my $start_time = time(); ############################################################################### # # SUB-ROUTINES # ############################################################################### # sub db_connect_get_hosts ############################################################################### #Sub-Routine um auf die Datenbank zuzugreifen und eine Hostliste herauszu- #holen um sie als ARRAY an die @hosts für den SNMP::Multi zu übergeben # #FUNKTIONIERT NOCH NICHT EINWANDFREI ES WIRD NUR DER LETZTE TEIL ÜBERGEBEN #@hosts funktioniert aber sub db_connect_get_hosts { my $dbh = DBI->connect("DBI:mysql:nemo")|| die "Database connection not made: $DBI::errstr"; print "DB connected nemo for Hostlist\n";; my $sth1 = $dbh->prepare('SELECT * FROM `nemo`.`hostlist`'); $sth1->execute(); @row = $sth1->fetchrow_array; } # sub snmp_multi ############################################################################### sub snmp_multi { my $comm = 'public'; my @hosts = &db_connect_get_hosts; my @vars = &db_connect_get_parameter; my $req = SNMP::Multi::VarReq->new ( nonrepeaters => 2, maxrepetitions => 100, hosts => [ @hosts ], # vars => '@vars', vars => [ ['sysUpTime'], ['sysName'], ['ifDescr'], ['ifAdminStatus'], ['ifOperStatus'], ['1.3.6.1.4.1.9.2.1.3'], #hostName ['sysContact'], ['sysLocation'], ['1.3.6.1.4.1.9.9.13.1.2.1.7'], #ciscoEnvMonVoltageState ['1.3.6.1.4.1.9.9.13.1.3.1.6'], #ciscoEnvMonTemperatureState ['1.3.6.1.4.1.9.9.13.1.5.1.3'], #ciscoEnvMonSupplyState ['1.3.6.1.4.1.9.2.1.57'], #avgBusy1 ['ifType'], ['ifInOctets'], ['ifOutOctets'], ['ifInErrors'], ], # Non-repeaters ) or croak "VarReq: $SNMP::Multi::VarReq::error\n"; my $sm = SNMP::Multi->new ( Method => 'bulkwalk', Community => $comm, Version => '2c', Timeout => 5 ) or croak "$SNMP::Multi::error\n"; $sm->request($req) or die $sm->error; my $response = $sm->execute(15) or croak "$SNMP::Multi::error\n"; for my $host ($response->hosts()) { for my $result ($host->results()) { if ($result->error()) { print "Error: ", $result->error(), "\n"; next; } for my $varlist ($result->varlists()) { print "map { $_->fmt() } @$varlist"; } ######################## MAIN CODE BLOCK #################### snmp_multi; exit 0;