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 : 2 / Moyenne : 3)

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 e-mail ne sera pas publiée.