2011-08-17 Ramon Novoa <rnovoa@artica.es>
* lib/PandoraFMS/NetworkServer.pm: Convert text obj tags to OIDs. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4758 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
3793edcbcc
commit
ade85fe547
|
@ -1,3 +1,7 @@
|
|||
2011-08-17 Ramon Novoa <rnovoa@artica.es>
|
||||
|
||||
* lib/PandoraFMS/NetworkServer.pm: Convert text obj tags to OIDs.
|
||||
|
||||
2011-08-16 Sergio Martin <sergio.martin@artica.es>
|
||||
|
||||
* lib/PandoraFMS/Core.pm
|
||||
|
|
|
@ -44,6 +44,7 @@ my @TaskQueue :shared;
|
|||
my %PendingTasks :shared;
|
||||
my $Sem :shared = new Thread::Semaphore;
|
||||
my $TaskSem :shared = new Thread::Semaphore (0);
|
||||
my $SNMPSem :shared = new Thread::Semaphore (1);
|
||||
|
||||
########################################################################################
|
||||
# Network Server class constructor.
|
||||
|
@ -291,9 +292,8 @@ sub pandora_snmp_get_command ($$$$$$$$$) {
|
|||
# Makes a call to SNMP modules to get a value,
|
||||
##########################################################################
|
||||
|
||||
sub pandora_query_snmp ($$) {
|
||||
my $pa_config = $_[0];
|
||||
my $module = $_[1];
|
||||
sub pandora_query_snmp ($$$) {
|
||||
my ($pa_config, $module, $dbh) = @_;
|
||||
|
||||
my $snmp_version = $module->{"tcp_send"}; # (1, 2, 2c or 3)
|
||||
my $snmp3_privacy_method = $module->{"custom_string_1"}; # DES/AES
|
||||
|
@ -305,6 +305,11 @@ sub pandora_query_snmp ($$) {
|
|||
my $snmp_community = $module->{"snmp_community"};
|
||||
my $snmp_target = $module->{"ip_target"};
|
||||
my $snmp_oid = $module->{"snmp_oid"};
|
||||
return (undef, 0) unless ($snmp_oid ne '');
|
||||
if ($snmp_oid =~ m/[a-zA-Z]/) {
|
||||
$snmp_oid = translate_obj ($dbh, $snmp_oid, $module->{"id_agente_modulo"});
|
||||
return (undef, 0) unless ($snmp_oid ne '');
|
||||
}
|
||||
|
||||
my $snmp_timeout = $pa_config->{"snmp_timeout"};
|
||||
my $snmp_retries = $pa_config->{'snmp_checks'};
|
||||
|
@ -417,7 +422,7 @@ sub exec_network_module ($$$$) {
|
|||
($id_tipo_modulo == 16) ||
|
||||
($id_tipo_modulo == 17)) {
|
||||
|
||||
($module_data, $module_result) = pandora_query_snmp ($pa_config, $module);
|
||||
($module_data, $module_result) = pandora_query_snmp ($pa_config, $module, $dbh);
|
||||
|
||||
if ($module_result == 0) { # A correct SNMP Query
|
||||
# SNMP_DATA_PROC
|
||||
|
@ -481,5 +486,23 @@ sub exec_network_module ($$$$) {
|
|||
}
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Convert a text obj tag to an OID and update the module configuration.
|
||||
###############################################################################
|
||||
sub translate_obj ($$$) {
|
||||
my ($dbh, $obj, $module_id) = @_;
|
||||
|
||||
# SNMP is not thread safe
|
||||
$SNMPSem->down ();
|
||||
my $oid = SNMP::translateObj ($obj);
|
||||
$SNMPSem->up ();
|
||||
|
||||
# Update module configuration
|
||||
$oid = '' unless defined ($oid);
|
||||
db_do ($dbh, 'UPDATE tagente_modulo SET snmp_oid = ? WHERE id_agente_modulo = ?', $oid, $module_id);
|
||||
|
||||
return $oid;
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
|
Loading…
Reference in New Issue