0

đŸ–šïž RĂ©cupĂ©rer des compteurs d’imprimantes rĂ©seau avec des batchs MS-DOS et SNMP en 5 lignes

Introduction – Les MIB

Les MIB (Management Information Base) sont des informations structurĂ©es que l’on retrouve pour tous les matĂ©riels rĂ©seau (switches, firewalls, routeurs, serveurs, postes de travail, imprimantes…). Ces informations peuvent ĂȘtre lues Ă  distance et parfois modifiĂ©es Ă  l’aide du protocole SNMP (Simple Network Management Protocol).

La structure d’une MIB est hiĂ©rarchisĂ©e en forme d’arbre. Chaque information de la MIB est reprĂ©sentĂ©e sous une forme unique de suite de nombres, par exemple 1.3.6.1.2.1.2.2.1.2 :

Explorer une MIB

Des logiciels tels que BPSNMPUtil permettent d’explorer les MIB graphiquement :

[Pré-requis] Installer le protocole SNMP

SNMP est un protocole de gestion de rĂ©seau qui permet d’interroger Ă  distance des matĂ©riels TCP/IP et de les superviser. La plupart des logiciels de supervision rĂ©seau tels que PRTG utilisent SNMP.

Une requĂȘte SNMP est un paquet UDP envoyĂ© par le superviseur vers l’agent du matĂ©riel cible chargĂ© de retourner la rĂ©ponse. Pour que votre ordinateur soit superviseur, vous devez installer SNMP.

Pourquoi des batchs MS-DOS ?

Les requĂȘtes SNMP auraient pu ĂȘtre envoyĂ©es en Python ou en PHP, mais j’ai choisi les batchs MS-DOS pour insister sur la simplicitĂ© de la chose.

C’est parti !

REM Fichier parser_imprimante.bat 
REM Argument 1 : adresse IP de l'imprimante

SET Timeout=2
SET imprimante=%1
SET Sortie=%imprimante%.txt

REM MODELE DE L'IMPRIMANTE
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.25.3.2.1.3.1 >> %Sortie%

Ce script de 5 lignes se lance comme suit parser_imprimante.bat 192.168.0.100 et Ă©crit dans le fichier 192.168.0.100.txt le modĂšle de l’imprimante (le noeud .1.3.6.1.2.1.25.3.2.1.3.1 ). Voici les noeuds dans les MIB pour rĂ©cupĂ©rer numĂ©ro de sĂ©rie, uptime et compteur d’impression :

REM NUMERO DE SERIE
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.43.5.1.1.17.1 >> %Sortie%

REM UPTIME
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.1.3 >> %Sortie%

REM COMPTEURS D'IMPRESSION
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.43.10.2.1.4.1.1 >> %Sortie%

En sortie, voici le contenu du fichier 192.168.0.100.txt :

SNMPv2-MIB::sysDescr.0 = STRING: Dell B2375dfw Mono MFP; V4.70.01.17;Engine V1.00.01;NIC V4.01.29 
SNMPv2-SMI::enterprises.236.11.5.1.1.1.4.0 = STRING: "82035Y1"
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (241764700) 27 days, 23:34:07.00
SNMPv2-SMI::enterprises.236.11.5.1.1.3.27.0 = INTEGER: 10442

On retrouve bien le modĂšle, le numĂ©ro de sĂ©rie, l’uptime et le compteur. Ce fichier peut facilement ĂȘtre parsĂ©.

Noter qu’il y a plusieurs compteurs d’impression suivant les modĂšles (impressions monochromes, impressions couleurs, photocopies, RV…)

D’autres noeuds intĂ©ressants :

  • Niveaux des cartouches
  • SMTP si l’imprimante peut envoyer des mails
  • DurĂ©e avant maintenance
  • Localisation gĂ©ographique de l’imprimante

Et pour Ă©viter le scan d’une imprimante qui n’est pas en ligne :

snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.1.3 > NUL

if errorlevel 1 (
 REM echo %imprimante% n'est pas en ligne 
 REM echo. REM echo  ATTENTION : L'imprimante %imprimante% n'est pas en 
 ligne 
 REM CREATION DU FICHIER VIDE 
 echo. > %Sortie%-OFFLINE.txt 
 GOTO :EOF
) else (
 REM echo %imprimante% est en ligne
 REM ON CONTINUE
)

Le script intégral

REM Fichier parser_imprimante.bat
REM Argument 1 : adresse IP de l'imprimante

SET Timeout=2
SET imprimante=%1
SET Sortie=%imprimante%.txt

snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.1.3 > NUL

if errorlevel 1 (
 REM L'imprimante n'est pas en ligne
 REM CREATION DU FICHIER VIDE
 echo. > %Sortie%-OFFLINE.txt
 GOTO :EOF
) else (
 REM echo %imprimante% est en ligne
 REM ON CONTINUE
)

REM MODELE DE L'IMPRIMANTE
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.25.3.2.1.3.1 >> %Sortie% 

REM NUMERO DE SERIE
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.43.5.1.1.17.1 >> %Sortie%

REM UPTIME
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.1.3 >> %Sortie%

REM COMPTEURS D'IMPRESSION
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.43.10.2.1.4.1.1 >> %Sortie% 

REM NOM DE L'IMPRIMANTE
snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.1.5 >> %Sortie%.txt
parser_imprimante.bat 192.168.0.100
parser_imprimante.bat 192.168.0.102 

Comment trouver les noeuds dans la MIB correspondant aux informations que l’on cherche ?

C’est trĂšs simple ! Par une recherche inversĂ©e : on cherche ce qu’on connait dĂ©jĂ  et on obtient le nƓud. Utilisez pour cela un explorateur de MIB qui permet d’exporter l’intĂ©gralitĂ© de la MIB. Cherchez ensuite le nom de l’imprimante, et vous aurez le nƓud correspondant Ă  son nom.

Pour trouver le noeud correspondant Ă  un compteur d’impression, il faut connaitre d’avance et prĂ©cisĂ©ment ce compteur (voir sur l’imprimante) et le trouver dans la MIB. Attention, le compteur d’impression Ă©volue en temps rĂ©el !

Ca se corse quand ?

Ca se corse lorsqu’on se rend compte que, selon le modĂšle d’imprimante, le nƓud n’est pas le mĂȘme pour le numĂ©ro de sĂ©rie par exemple. LĂ , il faudra tester le modĂšle avant d’explorer le nƓud :

IF %Modele% EQU BROTHER-MFC9120 (
     snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.2.1.43.5.1.1.17.1 >> %Sortie%
     Echo 02 Numero de Serie 



.. OK
     GOTO SUITE03
)
IF %Modele% EQU LEXMARK-C792 (
     snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.4.1.641.2.1.2.1.6.1 >> %Sortie%
     Echo 02 Numero de Serie 



.. OK
     GOTO SUITE03
)
IF %Modele% EQU TOSHIBA-ESTUDIO256 (
     snmpwalk -t %Timeout% -v 1 -c public %imprimante% .1.3.6.1.4.1.1129.2.3.50.1.2.4.1.28.1.1 >> %Sortie%
     Echo 02 Numero de Serie 



.. OK
     GOTO SUITE03
)
Vous pouvez Ă©valuer cet article en un clic. Garanti sans gluten. Merci !
(Evaluations : 1 / Moyenne : 5)

Piregwan pour Krakoukas.com

MaĂźtre des traditions et Grand malade Ă  World of Warcraft (18.000 heures de jeu), amateur de piments đŸŒ¶ïž au delĂ  de 30.000 Scoville et de pizza maison 🍕, j'aime les 3C (les chats đŸ˜Œ, le code et les choux de Bruxelles đŸ„Š) et la philosophie du CCC allemand (Chaos Computer Club đŸ’»).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *