Articles - Logiciel & scripts

phpSysInfo & BIOS Acer

  |   1774  |   Commentaires (2)  |  Logiciel & scripts
Il existe une multitude de façons pour obtenir rapidement des informations à distance sur un ordinateur Linux. Soit on s'y connecte en SSH, soit on utilise Webmin ou on peut même jouer à de la supervision Nagios/Centreon, pour ce que je connais... Il existe aussi une application web en PHP qui s’appelle phpSysInfo (PSI) et qui, dans la lignée des phpMyAdmin, phpPgAdmin et consorts, permet d'obtenir une page web avec quelques surveillances basiques. L'avantage de phpSysInfo est sa facilité de mise en place et pas la peine de se loguer. Bref c'est pratique pour rapidement jeter un coup d’œil rapide à l'état d'un serveur distant (charge CPU, état mémoire et stockage).

Au boulot je suis tombé sur un bug pas banal. J'ai rajouté cette petite application à un Ubuntu Server. La page est bien là mais elle reste sur un magnifique "Loading... Please wait" et puis plus rien. Inutile de vous dire que vous pouvez attendre longtemps. :lol



J'ai récupéré la version 3.2.6, dernière en date et c'est toujours pareil. Donc le problème semble venir plutôt de la machine. :?

index.php appelle derrière xml.php pour récupérer les informations du PC en XML et les présenter en HTML. C'est fait à base de Bootstrap et jQuery. Voyons ce qu'il se passe lorsque nous appelons cette page.



ERROR ! Visiblement le XML en retour n'est pas bien formé, et donc inexploitable pour le navigateur, problème de balise. Et comment ! La réponse est tronquée à partir de ERC410M (= numéro de modèle du PC), il manque toute la fin.



Je suis allé directement sur le serveur pour voir ce qu'il en est. Idem. Fin du XML. Pas de retour chariot. Prompt sur la même ligne.



J'ai décidé d'activer le mode debug dans le fichier de configuration de PSI et de tout faire sortir dans /tmp/phpsysinfo.log.




Je ne trouve rien d'explicatif au premier abord dedans (greppé sur "AcerPower") mais c'est en décidant de tester ce que me sort un dmesg que je comprends enfin :



On dirait qu'il y a une douzaine de caractères parasites pile à l'endroit où l'XML s’arrête. :)

La récupération des informations se fait dans le fichier class.XML.inc.php. C'est à cet endroit qu'est remplie la valeur de l'attribut "Name" de la balise "Hardware".



Reste plus qu'à patcher pour écarter les caractères parasites des tables de données du BIOS ACER. Ma flemme m'a fait trouvé la chose rapidement sur StackOverflow avec une petite fonction preg_replace. Tous les caractères au code hexadécimal entre les plages 00-1F et 80-FF sont donc supprimés (enfin remplacés par rien).

Code PHP :
$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);


Ce qui donne :



Cela fonctionne mieux. Youpi, hourra !



On dirait donc que le BIOS de chez Acer est un peu foireux sur ce point. Bug ?
En tout cas c'est la première fois que je vois cela, je n'ai jamais eu de problème avec PSI sur les ordinateurs où je l'avais installé jusqu'à présent.

Admirez la bête, un magnifique PC de bureau Acer AcerPower F5 avec 1Go de RAM et son Intel Pentium D820.



L'administration est pauvre, comme vous le voyez elle n'a pas d'autre choix que de recycler ses vieux PC pour en faire des serveurs de sauvegarde. N'empêche que ces bécanes vous les mettez dans un LTI avec une climatisation, sans poussière et sans chaleur dans leur environnement, elles tournent H24 sans problème comme les vraies machines serveur (matériellement parlant). Pour être honnête, j'ai pu gagner 200Mo de RAM en descendant la mémoire vidéo dans le BIOS (256Mo alloués -> 32Mo), même si cela ne sert pas à grand chose. :D

C'est un Ubuntu Server 11.10, oui oui en 2016, mais ce serait trop long à expliquer... :crazy