1 - Préambule
Nous allons maintenant détaillé la méthode pour grapher les valeurs du swich en émission.
2 - Script d'interrogation
Le script utilisé est le suivant : freeboxv6_adsl_api_switch_output.sh
#!/bin/sh app_token=`grep "app_token" "/tmp/post_authorize.log" | cut -f 4 -d ':' | cut -f 1 -d ','| sed 's/\\\//g' |sed "s/\"//g"| sed "s/\r//g" | sed "s/\n//g"` curl -H "Content-type: application/json" -X GET http://mafreebox.freebox.fr/api/v1/login/>/tmp/challenge.log 2>/dev/null challenge=`grep "challenge" "/tmp/challenge.log" | cut -f 5 -d ':' | cut -f 1 -d ','| sed 's/\\\//g' |sed "s/\"//g"| sed "s/\r//g" | sed "s/\n//g"` password=`echo -n $challenge | openssl dgst -sha1 -hmac $app_token` curl -i -H "Content-type: application/json" -X POST http://mafreebox.freebox.fr/api/v1/login/session/ -d ' { "app_id": "fr.prestaopen.cacti", "password": "'$password'" } '>/tmp/session_token.log 2>/dev/null session_token=`grep "session_token" "/tmp/session_token.log" | cut -f 3 -d ':' | cut -f 1 -d ','| sed 's/\\\//g' |sed "s/\"//g"| sed "s/\r//g" | sed "s/\n//g"` curl -i -X POST http://mafreebox.freebox.fr/api/v1/rrd/ -H "X-Fbx-App-Auth: $session_token" -d ' { "db": "switch", "fields": [ "tx_1" ], "precision": 1 } '> /tmp/switch_tx_1.log 2>/dev/null switch_tx_1=`cat /tmp/switch_tx_1.log | grep -oE "[^{]+$"| grep -oE ',".*,' | sed -n 's/\([^{]*:\)\([^,]*\),.*/\2/p' | sed 's/.\{2\}$//'` curl -i -X POST http://mafreebox.freebox.fr/api/v1/rrd/ -H "X-Fbx-App-Auth: $session_token" -d ' { "db": "switch", "fields": [ "tx_2" ], "precision": 1 } '> /tmp/switch_tx_2.log 2>/dev/null switch_tx_2=`cat /tmp/switch_tx_2.log | grep -oE "[^{]+$"| grep -oE '":.*,' | sed -n 's/\([^:]*:\)\([^,]*\),.*/\2/p'` curl -i -X POST http://mafreebox.freebox.fr/api/v1/rrd/ -H "X-Fbx-App-Auth: $session_token" -d ' { "db": "switch", "fields": [ "tx_3" ], "precision": 1 } '> /tmp/switch_tx_3.log 2>/dev/null switch_tx_3=`cat /tmp/switch_tx_3.log | grep -oE "[^{]+$"| grep -oE '":.*,' | sed -n 's/\([^:]*:\)\([^,]*\),.*/\2/p'` curl -i -X POST http://mafreebox.freebox.fr/api/v1/rrd/ -H "X-Fbx-App-Auth: $session_token" -d ' { "db": "switch", "fields": [ "tx_4" ], "precision": 1 } '> /tmp/switch_tx_4.log 2>/dev/null switch_tx_4=`cat /tmp/switch_tx_4.log | grep -oE "[^{]+$"| grep -oE ',".*,' | sed -n 's/\([^{]*:\)\([^,]*\),.*/\2/p' | sed 's/.\{2\}$//'` printf "switch_tx_1:%s switch_tx_2:%s switch_tx_3:%s switch_tx_4:%s \n" $switch_tx_1 $switch_tx_2 $switch_tx_3 $switch_tx_4 ;
Toutes les 5 minutes, nous récupérons la dernière valeur pour chaque port du switch.
3 - Data Input Method
4 - Data Template
5 - Graph Template
Nous allons voir en détail les items 9 à 12.
Pour les autres items, il faut se servir des écrans ci-dessus.
6 - Résultat
Après avoir assigné ce template à la Freebox, nous obtenons ceci :
Si l'on regarde les graphiques affichés sur mafreebox.freebox.fr :
Port 3 en émission :
Port 4 en émission :
On voit que la tendance des courbes est la mais la précision n'y est pas.
Ce résultat imparfait vient du fait que le script ne garde que la dernière valeur fournie par l'API.
Nous allons voir comment utiliser toutes les valeurs fournies par l'API dans l'article suivant.