Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

HTTP : Lister les répertoires d'un serveur


Messages recommandés

Posté(e) (modifié)

Bonjour ^^

 

 

Ces imprimantes HP ont un serveur HTTP par lequel je peux les administrer.

Dans ces pages, il y a une information qui m'intéresse plus particulièrement : le niveau d'encre de la cartouche ainsi que l'usure de certaines pièces (kit de maintenance).

 

Avec une petite page http, j'accède assez rapidement aux informations des imprimantes(clicodrome) mais j'aimerai aller encore plus loin avec une seule et unique page qui afficherait les valeurs de toutes les imprimantes (car pour le moment je dois consulter les imprimantes une à une).

 

D'origine, les valeurs sont représentées sous forme graphique et d'une valeur en pourcentage :

 

img-1027404jw47.png

 

L'URL pour accéder à cette page est :

http://addrs-ip-imprimante-reseau/hp/device/this.LCDispatcher

 

Et le code source de la partie qui m'intéresse :

<tr><td><table width="100%" border="0">
<tr><td colspan="2"><b><font face="Helvetica,Arial" size="2">Encres : (% restant)</font></b></td></tr>
<tr><td width="50%"><font face="Helvetica,Arial" size="1">Cartouche d'impression Noir     91%</font><br><font face="Helvetica,Arial" size=1>Numéro de référence HP :	 Q1338A</font></td><td width="50%"><font face="Helvetica,Arial" size="1">Kit de maintenance     72%</font><br><font face="Helvetica,Arial" size=1>Numéro de référence HP :	 110V-Q2429A, 220V-Q2430A</font></td></tr><tr><td width="50%"><table border="1" cellspacing="0" width="100%">
<tr><td>
<table  border="0" cellspacing="0" width="91%" height="21" bgcolor="#000000">
<tr><td>&nbsp</td></tr>

</table>
</td></tr></table>
</td>
<td width="50%"><table border="1" cellspacing="0" width="100%">
<tr><td>
<table  border="0" cellspacing="0" width="72%" height="21" bgcolor="#000000">
<tr><td>&nbsp</td></tr>
</table>
</td></tr></table>
</td>
</tr></table>
</td></tr>
<tr><td>
<table width="600" border="0">
</table>
</td></tr>
<tr><td align="center"><a href="this.LCDispatcher?dispatch=html&cat=0&pos=2" style="font-family: Helvetica,Arial,'Sans Serif'; font-size: 10pt">Détails sur les fournitures</a></td></tr>

 

Cartouche d'impression Noir     91%

...

Kit de maintenance     72%

^^ j'aimerai donc récupérer/extraire ces deux valeurs (ici dans l'exemple 91 et 72 %).

 

Question : est-ce possible et dans quel sens chercher voir même, comment faire ? (euh, pas trop compliqué :-/)

 

Et question en sus : est-il possible (et comment) de lister les répertoires HTTP de ces serveurs ?

Modifié par Pang

Posté(e)

Tu ne pourras pas lister tout ce que ces serveurs ont à leur disposition. Au mieux tu pourras aspirer récursivement tout ce qui est accessible depuis un certain point d'entrée mais rien de plus.

En ce qui concerne ta problématique j'ai eu à résoudre à peu près la même et j'ai créé un plugin pour l'outil de monitoring, mais c'est pour Munin, et c'est sous Linux...

Par exemple, pour récupérer les niveaux d'encre sur notre imprimante HP couleur :

#!/bin/sh
#
# Plugin qui vérifie le niveau d'encre dans l'imprimante HP
#
#

if [ "$1" = "config" ]; then
echo "graph_title Niveau d'encre HP LJ2605dn"
echo "graph_vlabel niveau d'encre en %"
	echo "graph_args -l0 --base 1000"
echo "graph_category imprimantes"
echo "noir.label noir"
echo "noir.colour 000000"
echo "noir.min 0"
echo "cyan.label cyan"
echo "cyan.colour 00ffff"
echo "cyan.min 0"
echo "magenta.label magenta"
echo "magenta.colour ff00ff"
echo "magenta.min 0"
echo "jaune.label jaune"
echo "jaune.colour dddd22"
echo "jaune.min 0"
exit 0
fi

wget -q -O- http://192.168.0.12/ | awk '/^ +Cartouche/ { toto = $2 } /  [0-9]+%/ { print tolower(toto) ".value " substr(gensub("%","","g",$1),13) }'

 

-- edit --

Résultat : munin-imprimantes-small.png

Posté(e) (modifié)

ok, wget bien sûr !

Pas moyen de faire autrement que de passer par une source externe ?

 

Edit : rendu très pro, c'est joli, bravo. Si j'arrive à pondre un truc comme ça, j'ai ma promotion :P

Modifié par Pang
Posté(e)

"Source externe" ? C'est à dire ?

Le seul endroit facilement accessible où tu trouves l'info en question c'est cette page Web, tu vas être obligé d'accéder à la page si tu veux récupérer l'info... ;-p

Posté(e)
"Source externe" ? C'est à dire ?

wget.

 

Le seul endroit facilement accessible où tu trouves l'info en question c'est cette page Web, tu vas être obligé d'accéder à la page si tu veux récupérer l'info
C'est clair. Si j'ai pas le choix je passerai par wget, mais c'est vrai que dans l'absolu j'aurai préféré ne pas avoir à télécharger quoi que ce soit d'autre; mais c'est pas très grave je ferais un paquetage (enfin si j'arrive à décrypter la syntaxe de cette commande et mieux, si j'arrive à extraire juste ce qui m'intéresse de toute cette page de code html...)

 

KewlCat, ça serait fort sympathique si à l'occasion tu trouvais le temps de coller le code source de la page html de l'imprimante dans laquelle tu vas récupérer l'info avec wget (oui c'est directement beaucoup plus facile pour moi d'apprendre par l'exemple que par la syntaxe. Dis autrement, l'exemple m'aide à comprendre la syntaxe :P )

Posté(e)

Ah ok...

Si tu ne veux pas utiliser wget et awk comme je l'ai fait, y'a aucun souci. Les seules choses que font ces outils c'est 1) récupérer le contenu de la page et 2) utiliser une expression régulière ("expression rationnelle") pour récupérer la valeur intéressante au milieu du code.

Rien que tu ne puisses faire avec n'importe quel autre langage un brin évolué ;-)

 

Pour info, voici l'extrait où figurent les niveaux d'encre dans la page qui est servie par l'imprimante :

		   <table class="mainContentArea">
		  <tr><td> </td></tr>
		  <tr>
			<td class="tableColumnHeader">Consommable</td>
			<td class="tableColumnHeader">Niveau</td>
			<td class="tableColumnHeader">Commander réf HP :</td>
			<td class="tableColumnHeader">Estimation pages restantes</td>
		  </tr>
		  <tr>
			<td class="tableDataCellStand width30">
						  Cartouche Noir
		   </td>
			<td class="tableDataCellStand width25" style="vertical-align: bottom"> 
				  <table class="mainContentArea"><tr>
					<td class="width80">
					   <table cellspacing="0" cellpadding="0" class="hpGasGaugeBorder"><tr>
						 <td style="WIDTH:9%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #000000;">
						 </td>
						 <td style="WIDTH:91%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #EEEEEE;">
						 </td>
					  </tr></table>
					</td>
					<td>
						  9%
					</td>
				  </tr></table>
		   </td>
			<td class="tableDataCellStand width15">Q6000A</td>
			<td class="tableDataCellStand width30">
				   221
			</td>
		  </tr>
		  <tr>
			<td class="tableDataCellStand width30">
						  Cartouche Cyan
		   </td>
			<td class="tableDataCellStand width25" style="vertical-align: bottom"> 
				  <table class="mainContentArea"><tr>
					<td class="width80">
					   <table cellspacing="0" cellpadding="0" class="hpGasGaugeBorder"><tr>
						 <td style="WIDTH:13%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #00FFFF;">
						 </td>
						 <td style="WIDTH:87%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #EEEEEE;">
						 </td>
					  </tr></table>
					</td>
					<td>
						  13%
					</td>
				  </tr></table>
		   </td>
			<td class="tableDataCellStand width15">Q6001A</td>
			<td class="tableDataCellStand width30">
				   316
			</td>
		  </tr>
		  <tr>
			<td class="tableDataCellStand width30">
						  Cartouche Magenta
		   </td>
			<td class="tableDataCellStand width25" style="vertical-align: bottom"> 
				  <table class="mainContentArea"><tr>
					<td class="width80">
					   <table cellspacing="0" cellpadding="0" class="hpGasGaugeBorder"><tr>
						 <td style="WIDTH:40%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #FF00FF;">
						 </td>
						 <td style="WIDTH:60%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #EEEEEE;">
						 </td>
					  </tr></table>
					</td>
					<td>
						  40%
					</td>
				  </tr></table>
		   </td>
			<td class="tableDataCellStand width15">Q6003A</td>
			<td class="tableDataCellStand width30">
				   1373
			</td>
		  </tr>
		  <tr>
			<td class="tableDataCellStand width30">
						  Cartouche Jaune
		   </td>
			<td class="tableDataCellStand width25" style="vertical-align: bottom"> 
				  <table class="mainContentArea"><tr>
					<td class="width80">
					   <table cellspacing="0" cellpadding="0" class="hpGasGaugeBorder"><tr>
						 <td style="WIDTH:40%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #FFFF00;">
						 </td>
						 <td style="WIDTH:60%; 
								MARGIN: 0px; HEIGHT:11px; BACKGROUND-COLOR: #EEEEEE;">
						 </td>
					  </tr></table>
					</td>
					<td>
						  40%
					</td>
				  </tr></table>
		   </td>
			<td class="tableDataCellStand width15">Q6002A</td>
			<td class="tableDataCellStand width30">
				   1410
			</td>
		  </tr>
		  <tr>
			<td colspan="4">
			  <FORM method="post" ACTION="/hp/device/supplies_status.html">
			  <div class="butSet pad6x10">
				<INPUT type="submit" class="buttonTxtSize" name="SuppliesDetails" id="SuppliesDetails" / VALUE="Détail consommables">
			  </div>
			  </FORM>
			</td>
		  </tr>
	</table>

Comme tu peux le voir, les niveaux d'encre sont précédés d'espaces puis de deux  .

Ce que fait le script awk, c'est d'abord récupérer la couleur qui est affichée juste avant, dans le libellé "Cartouche <nom de la couleur>", puis de récupérer la valeur en % dans les lignes qui suivent.

Posté(e)

Très bien.

 

Rien que tu ne puisses faire avec n'importe quel autre langage un brin évolué :P
Hélas le seul langage disponible par défaut est VBScript; ça va pas être possible. Par contre en python c'est jouable.

 

J'ai vu qu'il existait une version win32 de awk

. Je vais essayer cet outil, mais je crains un peu cette syntaxe qui n'est pas sans rappeler celle de l'outil sed dont tu m'avais conseillé l'usage pour trier mes marques pages (que j'ai gardé mais j'te cache pas que j'ai trouvé un plug firefox qui va bien :P )

 

 

^^ Merci ^^

 

 

---------

 

 

wget -r http://10.0.0.1

ne m'aspire que la page principale du serveur, alors qu'il en a à gaver; ké passa ?

Posté(e) (modifié)

Le résultat de la commande dans la console :

 

>wget -r 10.0.0.1

SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files\GnuWin32/etc/wgetrc
--2009-10-20 10:18:57--  http://10.0.0.1/
Connexion vers 10.0.0.1:80...connectÚ.
requÛte HTTP transmise, en attente de la rÚponse...301 Moved Permanently
Emplacement: hp/device/this.LCDispatcher [suivant]
--2009-10-20 10:18:58--  http://10.0.0.1/hp/device/this.LCDispatcher
Connexion vers 10.0.0.1:80...connectÚ.
requÛte HTTP transmise, en attente de la rÚponse...200 OK
Longueur: non spÚcifiÚ [text/html]
Saving to: `10.0.0.1/hp/device/this.LCDispatcher'

[   <=>								 ] 16á497	  29,5K/s   in 0,5s

2009-10-20 10:18:58 (29,5 KB/s) - ½ 10.0.0.1/hp/device/this.LCDispatcher ╗
sauvegardÚ [16497]

Chargement de robots.txt; svp ignorer les erreurs.
--2009-10-20 10:18:58--  http://10.0.0.1/robots.txt
Connexion vers 10.0.0.1:80...connectÚ.
requÛte HTTP transmise, en attente de la rÚponse...200 OK
Longueur: 27 [text/plain]
Saving to: `10.0.0.1/robots.txt'

100%[======================================>] 27		  --.-K/s   in 0s

2009-10-20 10:18:59 (680 KB/s) - ½ 10.0.0.1/robots.txt ╗ sauvegardÚ [27/27
]

FINISHED --2009-10-20 10:18:59--
Downloaded: 2 files, 16K in 0,5s (29,5 KB/s)

>

 

Wget crée une sauvegarde : \10.0.0.1\hp\device\this.LCDpatcher (de 17 ko)

Cette page correspond à la page d'accueil de l'imprimante, page affichée lorsque l'on tape l'adresse IP de l'imprimante (ou son nom netbios) dans un navigateur web; l'URL devient : http://10.0.0.1/hp/device/this.LCDispatcher

 

En utilisation normale (avec un navigateur internet), lorsque je clique sur un lien de la page d'accueil de l'imprimante, les URLs se présentent comme ça :

http://10.0.0.1/hp/device/this.LCDispatcher?dispatch=html&cat=0&pos=1

ou encore :

http://10.0.0.1/hp/device/this.LCDispatcher?update=html&cat=1&pos=0&menu=3.0&setMenu

parfois même :

http://10.0.0.1/hp/jetdirect

^^ Si j'utilise wget sur ce répertoire ^^

 

>wget -r 10.0.0.1/hp
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files\GnuWin32/etc/wgetrc
--2009-10-20 10:37:08--  http://172.27.211.214/hp
Connexion vers 172.27.211.214:80...connectÚ.
requÛte HTTP transmise, en attente de la rÚponse...404 Not Found
2009-10-20 10:37:08 ERREUR 404: Not Found.
>

 

Parce que si je dois aspirer toutes les pages une à une, je vois pas trop l'intérêt, je m'attendais à ce qu'il aspire tout...

Modifié par Pang
Posté(e)

ok,

sed et gawk, même combat; langage d'extra terrestre !

=> KO au premier round, je jette l'éponge :P

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...