Welcome to OCS Inventory NG community support, where you can ask questions and receive answers from other members of the community.

Please ask questions only in English or French.

Release 2.11.1 available

The official documentation can be found on http://wiki.ocsinventory-ng.org. Read it before asking your question.

V2.8, XML avec des réponses en octetstring

Bonjour !

Lors d'un inventaire SNMP d'une imprimante HP, j'ai observé des problèmes d'encodage des valeurs issues des intérogations SNMP dans le fichier XML envoyé au serveur ( formatage des réponses au format octetstring dans les balises XML ) et retour d'un code 500 du serveur OCS

Mon serveur ( V2.8 sur Centos 7.8 2003 ) est configuré avec le modèle d'équipement SNMP suivant :

label + OID suivant :

Imprimante HPDescription1.3.6.1.2.1.1.1.0
Imprimante HPuptime1.3.6.1.2.1.1.3.0
Imprimante HPModel Name1.3.6.1.4.1.11.2.3.9.4.2.1.1.3.1.0
Imprimante HPSerial Number1.3.6.1.4.1.11.2.3.9.4.2.1.1.3.3.0Yes

Les traces ci-dessous sont issues des logs d'un agent ocs inventory V2.8 sur une Centos 7.8 2003 , version de perl  v5.16.3

La MiB HP (HP-LASERJET-COMMON-MIB.mib) est bien dans le répertoire "/usr/share/snmp/mibs", les droits d'accès sont OK ( similaire au autre mibs )

On peut voir que les balises XML "Model Name" et "Serial Number" sont au format OctetString et donc probablement dans un format inattendu pour le parser XML du Server OCS.

On peut observer à la fin des log que le serveur OCS renvoie un code  "500 Internal Server Error"

Les logs :

[Fri Nov 13 22:45:38 2020][debug] sending: <?xml version="1.0" encoding="UTF-8"?>
<REQUEST>
  <CONTENT>
    <snmp_imprimante_hp>
      <Description>HP ETHERNET MULTI-ENVIRONMENT,SN:VNC3S88888,FN:8G44X2Z,SVCID:30157,PID:HP LaserJet MFP M28w</Description>
      <Model Name>01:15:57:32:47:35:35:41</Model Name>
      <Serial Number>01:15:56:4E:43:33:53:38:38:38:38:38</Serial Number>
      <uptime>8 days, 03:58:42.74</uptime>
    </snmp_imprimante_hp>
  </CONTENT>
  <DEVICEID>agentocs-2020-11-13-18-50-24</DEVICEID>
  <QUERY>SNMP</QUERY>
</REQUEST>

[Fri Nov 13 22:45:38 2020][error] Cannot establish communication : 500 Internal Server Error
[Fri Nov 13 22:45:38 2020][debug] [snmpscan] End snmp_end_handler :)
 

Proposition de modification du code des modules Perl SnmpScan.pm et Snmp.pm

j'ai testé une modification du code perl de  la configuration du paramètre "-translate" de l'objet  Net::SNMP avec la configuration suivante dans les modules SnmpScan.pm et Snmp.pm. Le paramètre "translate" force la conversion du format "octetstring" vers des caractères lisibles.

-translate   => [-nosuchinstance => 0, -nosuchobject => 0, -octetstring => 0]

code d'origine :

-translate   => [-nosuchinstance => 0, -nosuchobject => 0, ]

voici un exemple :

                # We have an older version v2c ou v1
                ($session, $error) = Net::SNMP->session(
                    -retries     => 1 ,
                    -timeout     => 3,
                    -version     => 'snmpv'.$comm->{VERSION},
                    -hostname    => $device->{IPADDR},
                    -community   => $comm->{NAME},
                    -translate   => [-nosuchinstance => 0, -nosuchobject => 0, -octetstring => 0],
 

j'ai réalise les modifications 2 fois ( fonction snmp V1/V2 et snmp V3 ) dans les modules SnmpScan.pm et Snmp.pm

Après la modification ,le résultats est le suivant dans le fichier de log :

le formatage des réponses SNMP dans les balises XML est correcte ...Toutefois, la réponse du serveur est toujours "Cannot establish communication : 500 Internal Server"

<REQUEST>

  <CONTENT>
    <snmp_imprimante_hp>
      <Description>HP ETHERNET MULTI-ENVIRONMENT,SN:VNC3S88888,FN:8G44X2Z,SVCID:30157,PID:HP LaserJet MFP M28w</Description>
      <Model Name>W2G55A</Model Name>
      <Serial Number>VNC3S88888</Serial Number>
      <uptime>8 days, 06:06:36.83</uptime>
    </snmp_imprimante_hp>
  </CONTENT>
  <DEVICEID>agentocs-2020-11-13-18-50-24</DEVICEID>
  <QUERY>SNMP</QUERY>
</REQUEST>

[Sat Nov 14 00:53:33 2020][error] Cannot establish communication : 500 Internal Server Error
[Sat Nov 14 00:53:33 2020][debug] [snmpscan] End snmp_end_handler :

Les logs sur le serveur OCS

[Sat Nov 14 00:53:33.029221 2020] [perl:error] [pid 1837] [client 192.168.0.26:44192] \nnot well-formed (invalid token) at line 6, column 17, byte 228 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.\n

Pouvez-vous regarder le problème d'encodage des réponses SNMP dans le fichier XML du client OCS et l'erreur 500 du serveur, et peut être aussi ma proposition de modification du code ! smiley

Cordialement !

in Core server development by (140 points)
edited by

Please log in or register to answer this question.

 
Powered by Question2Answer
...