Recherchez dans la Communauté

Vous avez une question ?

Interrogez la communauté

internet & fixe ma connexion

Integration livebox et domotique... ou autre...

1 252  

Integration livebox et domotique... ou autre...

Bonjour,

 

Suite a des demandes pressantes, insistantes mais discrètes, je vous publie ici aussi un bout de code a finir selon vos besoins ! Il n'y a pas de raison que vous n'en profitiez pas aussi surtout si vous avez un truc genre linux qui traîne dans un coin. Ca a déjà été fait moult fois "ailleurs" mais c'est ma version faite á l'arrache... hein !

 

Chez moi, les données sont parsées et finissent dans un format propre sur mon broker MQTT a coté de l'état de ma domotique, mes serveurs et autres firewall... vous pouvez faire en sorte que ce qui sort de cette version passe les valeur dans un fichier CSV pour surveiller en temps presque réel les taux d'erreur de votre aDSL : replacez mes "echo $TMPVAR".par ce qui vous plaît.. si vous voulez en faire autre chose : allez y... Évitez juste de revendre ça á qui que ce soit façon droits d'auteurs fermés... hein!.

 

<code>

#!/bin/ksh

TARGET="livebox.home"
USERNAME="admin"
PASSWORD="XXXXXXXXXXXXXXXX"

CURL="/usr/local/bin/curl"
TMPDIR="/var/tmp"
COOKIE_FILE="livebox.dat"
TMPVAR=""

 

#
# Commands...
#
OPEN="authenticate?username=$USERNAME&password=$PASSWORD"
CLOSE="logout"
REBOOT="sysbus/NMC:reboot"
DSL_STS="sysbus/NeMo/Intf/dsl0:getDSLStats"
DSL_CFG="sysbus/NeMo/Intf/data:getMIBs"
LAN_CFG="sysbus/NeMo/Intf/lan:getMIBs"
# WIFI_STS="sysbus/Wificom:getStatus"
WAN_STS="sysbus/NMC:getWANStatus"

 

#
# connect
#
TMPVAR=`$CURL -i -X POST -i -H "Content-type: application/json" -c $TMPDIR/$COOKIE_FILE \
http://$TARGET/$OPEN 2>/dev/null`

TOKEN=${TMPVAR##*:}
TOKEN=${TOKEN#*\"}
TOKEN=${TOKEN%\"*}


#
# get dsl stats
#
TMPVAR=`$CURL -b $TMPDIR/$COOKIE_FILE -X POST -H 'Content-Type: application/json' \
-H "X-Context: $TOKEN" -d '{"parameters":{}}' http://$TARGET/$DSL_STS 2>/dev/null`

 

echo $TMPVAR
echo

 

#
# get WAN status
#
TMPVAR=`$CURL -b $TMPDIR/$COOKIE_FILE -X POST -H 'Content-Type: application/json' \
-H "X-Context: $TOKEN" -d '{"parameters":{}}' http://$TARGET/$WAN_STS 2>/dev/null`

 

echo $TMPVAR
echo

 

#
# get Wifi status
#
#TMPVAR=`$CURL -b $TMPDIR/$COOKIE_FILE -X POST -H 'Content-Type: application/json' \
# -H "X-Context: $TOKEN" -d '{"parameters":{}}' http://$TARGET/$WIFI_STS 2>/dev/null`
#
#echo $TMPVAR
#echo

 

#
# get dsl config
#
TMPVAR=`$CURL -b $TMPDIR/$COOKIE_FILE -X POST -H 'Content-Type: application/json' \

-H "X-Context: $TOKEN" -d '{"parameters":{}}' http://$TARGET/$DSL_CFG 2>/dev/null`

 

#### echo $TMPVAR
#### echo

 

#
# get dsl stats
#
TMPVAR=`$CURL -b $TMPDIR/$COOKIE_FILE -X POST -H 'Content-Type: application/json' \
-H "X-Context: $TOKEN" -d '{"parameters":{}}' http://$TARGET/$LAN_CFG 2>/dev/null`

 

#### echo $TMPVAR
#### echo

 

#
# Close ...
#
TMPVAR=`$CURL -i -b $TMPDIR/$COOKIE_FILE -X POST http://$TARGET/$CLOSE 2>/dev/null`

 

#
# Clean ...
#
rm $TMPDIR/$COOKIE_FILE

 

#
# EoF
#

 

</code>

La commande wifi n'est pas terrible.. je cherche encore la bonne !.Par contre je suis confiant pour trouver par la suite le ON/OFF du wifi. Je n'ai pas encore eu ni le besoin ni le temps de me faire un reboot de ma livebox3... Et les configs lan et wan donnent des résultats super long... donc a super-décoder pour en sortir l'important!

 

Et je n'ai pas encore localiser les surveillances de débits ! Par contre la surveillance wan et dsl ca roule tout seul... J'obtiens avec ce script depuis une machine nommée tschai :

 

<code>

:

tschai$ sudo ./livebox.sh

 

{"result":{"status:{"ReceiveBlocks":1,"TransmitBlocks":1,"CellDelin":0,"LinkRetrain":0,"InitErrors":0,"InitTimeouts":0,"LossOfFraming":0,"ErroredSecs":0,"SeverelyErroredSecs":0,"FECErrors":0,"ATUCFECErrors":0,"HECErrors":0,"ATUCHECErrors":0,"CRCErrors":0,"ATUCCRCErrors":0}}}

 

{"result":{"status":true,"data":{"WanState":"up","LinkType":"ethernet","LinkState":"up","MACAddress":"XX:XX:XX:XX:XX:XX","Protocol":"dhcp","ConnectionState":"Bound","LastConnectionError":"None","IPAddress":"XX:XX:XX:XX","RemoteGateway":"XX.XX.XX.XX","DNSServers":"80.10.246.132,81.253.149.2","IPv6Address":"2a01:cb19:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX","IPv6DelegatedPrefix":"2a01:cb19:XXXX:XXXX::/56"}}}

 

tschai$

</code>

Bon courage... a vos claviers pour les extractions de chaines qui vous plaisent...

 

Hop!

 

ps : avec un coup de cron par dessus... ca va tout seul en automatique!

ps2: c'est du ksh88 un peu imparfait mais assez portable. JDCJDR.

2 RÉPONSES 2
infosecu
contributeur
984  

Re: Integration livebox et domotique... ou autre...

pour les livebox pro fibre dernière génération

j'ai créé les script de reboot et de récupération de certaines infos j'ai pas fini

 

Script de reboot aussi bien en local qu'en accès distant si activé

#!/bin/bash
echo "l'ip est : $1"
echo "le port est : $2"
echo "l'username est : $3"
echo "le mot de passe est : $4"

curl -o ./livebox/rebootlivebox_context -k 'https://'$1':'$2'/ws' -c ./livebox/rebootlivebox_cookies.txt -X POST -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0' -H 'Accept: */*' -H 'Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3' --compressed -H 'Authorization: X-Sah-Login' -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Origin: https://'$1':'$2'' -H 'Connection: keep-alive' -H 'Referer: https://'$1':'$2'/homeAuthentificationRemote.html' -H 'Cookie: UILang=fr; lastKnownIpv6TabState=visible; 45b4c072/accept-language=fr,fr-FR; 45b4c072/sessid=w/yo4rbgVvLpFBUjcaVoHK3P' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: same-origin' --data-raw '{"service":"sah.Device.Information","method":"createContext","parameters":{"applicationName":"webui","username":"'$3'","password":"'$4'"}}'
ID=$(tail -n1 ./livebox/rebootlivebox_context | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/","username":"Remote","groups":"http,remoteadmin"}}//1')
ID2=$(tail -n1 ./livebox/rebootlivebox_cookies.txt | sed 's/#HttpOnly_'$1'\tFALSE\t[/]\tFALSE\t0\t//1' | sed 's/sessid\t/sessid=/1')
curl -o ./livebox/livebox_listeappel -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"NMC","method":"reboot","parameters":{"reason":"GUI_Reboot"}}'

 

et pour les infos

#!/bin/bash
echo "l'ip est : $1"
echo "le port est : $2"
echo "l'username est : $3"
echo "le mot de passe est : $4"

rm /var/www/html/admin/livebox/*

curl -o /var/www/html/admin/livebox/rebootlivebox_context -k 'https://'$1':'$2'/ws' -c /var/www/html/admin/livebox/rebootlivebox_cookies.txt -X POST --compressed -H 'Authorization: X-Sah-Login' -H 'Content-Type: application/x-sah-ws-4-call+json' --data-raw '{"service":"sah.Device.Information","method":"createContext","parameters":{"applicationName":"webui","username":"'$3'","password":"'$4'"}}'
ID=$(tail -n1 /var/www/html/admin/livebox/rebootlivebox_context | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/","username":"Remote","groups":"http,remoteadmin"}}//1')
ID2=$(tail -n1 /var/www/html/admin/livebox/rebootlivebox_cookies.txt | sed 's/#HttpOnly_'$1'\tFALSE\t[/]\tFALSE\t0\t//1' | sed 's/sessid\t/sessid=/1')

#info wifi
curl -o /var/www/html/admin/livebox/livebox_wifi -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"NeMo.Intf.lan","method":"getMIBs","parameters":{"mibs":"wlanvap"}}'

#info redirection de port
curl -o /var/www/html/admin/livebox/livebox_redport -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"Firewall","method":"getPortForwarding","parameters":{"origin":"webui"}}'

#info dhcp
curl -o /var/www/html/admin/livebox/livebox_dhcp -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"DHCPv4.Server","method":"getDHCPServerPool","parameters":{"id":"default"}}'

#info dhcp ip fixe
curl -o /var/www/html/admin/livebox/livebox_ipfixe -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"DHCPv4.Server.Pool.default","method":"getStaticLeases","parameters":"default"}'

#info ligne téléphone
curl -o /var/www/html/admin/livebox/livebox_numtel -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"VoiceService.VoiceApplication","method":"listTrunks","parameters":{}}'

#info port ethernet
curl -o /var/www/html/admin/livebox/livebox_portethernet -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"NeMo.Intf.lan","method":"getMIBs","parameters":{"mibs":"eth"}}'

#info appel manqué
curl -o /var/www/html/admin/livebox/livebox_listeappel -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"VoiceService.VoiceApplication","method":"getCallList","parameters":[{"line":"1"}]}'

#info appareil manqué
curl -o /var/www/html/admin/livebox/livebox_listeapareil -k 'https://'$1':'$2'/ws' -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah '$ID'' -H 'Cookie: '$ID2'' --data-raw '{"service":"TopologyDiagnostics","method":"buildTopology","parameters":{"SendXmlFile":false}}'

infosecu
contributeur
933  

Re: Integration livebox et domotique... ou autre...

Bonjour

Je suis en train de le faire sur livebox pro v4.

J'arrive à m'authentifier mais pour la suite je bloque. Mais peut-être résolu dans la journée.

Sinon je mettrai à jour bientôt les fichiers SH et php pour la livebox pro fibre. J'ai bien avancer ce weekend

Vous avez une question ?

Interrogez la communauté

Déjà 755133 membres inscrits 🧡

3252 personnes actuellement en ligne

Tous les membres en ligne