You are not logged in.
Bonjour,
J'ai eu un souci avec l'agent Tracker. Voici ce que j'ai pu identifier jusqu'ici.
Contexte :
GLPI 0.72.3
Plugin tracker (server) : 2.1.3
Agent tracker : 1.5.3
Description :
Lors de l'exécution manuelle de l'agent :
perl tracker_agent.pl
On a en sortie :
Threads version: 1.67
== Discovery devices ==
Use of uninitialized value $_[1] in string eq at
/home/user/glpi/agent_tracker/inc/tracker_snmp.pm line 167 (#1)
(W uninitialized) An undefined value was used as if it were already
defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
To suppress this warning assign a defined value to your variables.
To help you figure out what was undefined, perl will try to tell you the
name of the variable (if any) that was undefined. In some cases it cannot
do this, so it also tells you what operation you used the undefined value
in. Note, however, that perl optimizes your program and the operation
displayed in the warning may not necessarily appear literally in your
program. For example, "that $foo" is usually optimized into "that "
. $foo, and the warning will refer to the concatenation (.) operator,
even though there is no . in your program.
SNMP ERROR: %s.
Use of uninitialized value $error in print at
/home/user/glpi/agent_tracker/inc/tracker_discovery.pm line 362 (#1)
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
SNMP ERROR: %s.
The file has been successfully uploaded
== Query devices ==
The file has been successfully uploaded
Débug :
L'agent tracker va chercher sur le serveur la liste des communautés SNMP à scanner.
Dans tracker_agent.pl, ligne 158 :
my $xml_file = get_snmp_http($PID,$config);
Puis pour la discovery, lecture du xml, ligne 165 :
my $data = $xml->XMLin($xml_file);
Qui est confié à la fonction discovery_auth, ligne 225 :
$authSNMP_discovery = discovery_auth($data);
Si je comprends bien, cette fonction s'attend à ce qu'il y ait une communauté avec 1 comme ID dans le cas où il y a plusieurs communautés. Dans le fichier inc/tracker_discovery.pm, ligne 95 :
if (ref($data->{discovery}->{authentification}->{1}) eq "HASH") {
Dans mon cas, je n'avais pas de communauté avec l'ID 1 (à cause d'une suppression). Voici le contenu de $data :
$VAR1 = {
'agent' => {
'threads_query' => '1',
'PID' => '01381515002',
'fragment' => '50',
'core_query' => '1',
'logs' => '2',
'key' => 'QC2yELnIdAt2DfT4OZGEwYdNQqAuya',
'id' => '2',
'threads_discovery' => '1',
'core_discovery' => '1'
},
'discovery' => {
'rangeip' => {
'entity' => '0',
'id' => '2',
'ipend' => '10.XXX.XXX.XXX',
'ipstart' => '10.XXX.XXX.XXX'
},
'authentification' => {
'4' => {
'version' => '1',
'sec_name' => {},
'auth_passphrase' => {},
'community' => 'snmpcommunaute ',
'sec_level' => {},
'priv_protocol' => {},
'priv_passphrase' => {},
'auth_protocol' => {}
},
'3' => {
'version' => '1',
'sec_name' => {},
'auth_passphrase' => {},
'community' => 'public',
'sec_level' => {},
'priv_protocol' => {},
'priv_passphrase' => {},
'auth_protocol' => {}
}
}
}
};
La lecture de la liste échoue alors et l'agent se lance dans le scan des plages IP sans connaître les communautés, comme on peut le voir sur la sortie du script ci-dessus.
Solution :
J'ai, pour l'instant mis 3 comme ID dans la fonction discovery_auth, ça fonctionne mais ce n'est pas la bonne solution.
Le redmine du plugin Tracker n'étant plus (il pointe vers Fusion Inventory), je me tourne vers le forum pour savoir quoi faire, et pour laisser une trace du problème. Si quelqu'un pouvait confirmer l'origine du bug et/ou proposer un patch, ce serait sympa.
Merci
Offline
Salut,
Tracker est maintenant dans le projet FusionInventory. L'agent que tu utilises n'est plus maintenu, il faut switcher sur l'agent FusionInventory.
Offline