Cacti utilise les requêtes contenues dans le script "freebox-api.sh" pour récupérer les informations voulues. J'avais déjà constaté que la box n'envoyait pas les données dans le même ordre selon le type de connexion xDSL. Je l'avais remarqué suite à mes problèmes de ligne qui m'ont obligé d'abandonner le VDSL pour revenir à l'ADSL. Depuis presque trois semaines, je suis repassé sur du VDSL, mes problèmes semblant être résolus.

J'installe donc la bonne version du script "freebox-api.sh" pensant que cela suffirait mais non. Cacti récupère bien les données mais certaines sont absentes. Enfin, presque. Cacti récupère des entêtes de donnée et non les données elles-mêmes. Pour une raison que je ne comprend pas, la box n'envoi plus les infos dans le même ordre, ce qui perturbe Cacti. Une seule solution, intervenir manuellement dans le script et le modifier.

Il vous faut ouvrir le script avec votre éditeur préféré (sur mac, j'utilise Smultron, gratuit et compatible avec différents formats de fichier). Vous devriez voir ces deux lignes à la fin, sinon, il faudra les ajouter :

echo $cnx > /volume1/web/cacti/scripts/cnx.xml
echo $xdsl > /volume1/web/cacti/scripts/xdsl.xml

Ces deux lignes exportent les données récupérées par le script dans deux fichiers XML dans le même répertoire. Ils ne sont pas utilisés pas Cacti. Je les utilise uniquement pour vérifier que la récupération des informations se déroule bien.

Dans le script "freebox-api.sh", vous pouvez voir la liste des commandes envoyées à la box (une par ligne). Pour chaque commande, il y a un argument indiquant le positionnement de la donnée à récupérer dans le résultat. un exemple :

bytes_up=`echo $cnx | cut -d':' -f6 | cut -d',' -f1`

A ce stade, si comme moi vous ne maitrisez pas le codage, vous êtes en panique. En fait c'est simple. Le système d'interrogation du Freebox Server repose sur deux scripts. Le script "freeboxos_bash_api.sh" lance les requêtes vers la box (de simples requête HTTP) et le script "freebox-api.sh" les extraits pour les enregistrer dans les deux fichiers XML mais aussi pour les envoyer à Cacti. Alors pourquoi deux fichiers XML ? Parce que les informations que je récupères sont extraites par deux requêtes HTTP différentes. C'est donc véritablement tout simple.

L'argument qui nous intéresse est "-f6". La commande extrait la donnée situé en sixième position dans le résultat global, l'élément séparateur étant le ":".

A partir de là, ma méthode est simple. Je lance le script "freebox-api.sh" manuellement depuis Terminal, puis j'ouvre toujours avec Smultron, le fichier XML concerné par le problème. Je recherche dans le fichier, une donnée correctement interprétée par Cacti (au besoin, je me connecte à mon interface de la box pour vérifier), puis je repère sa position pour comparer avec le script.

Dans quel cas modifier ce script ? Seul Cacti vous permettra de vous apercevoir du problème. L'un des graph ne tracera plus une information. Après plusieurs tests, j'ai constaté que le simple reboot de la box depuis l'interface Web, depuis son écran intégré ou même un reboot éléctrique n'engendre pas ce problème. Je ne l'ai rencontré que lors de la bascule entre l'ADSL et le VDSL. Le plus illogique est que entre mon premier passage en VDSL et le second, l'ordre n'est pas le même.

Comme cela n'arrive pas tous les jours, vous ne devriez pas être embêté.