hpsmartyz2 Posté(e) le 17 février 2022 Posté(e) le 17 février 2022 Quand je vois les tutos sur le monitoring qu'il est possible de mettre en place sur les versions plus récentes des NAS, je me dis que ce thread ne doit plus intéresser grand monde 😑 Pas grave 😀 Comme je suis passé sur une Livebox5 j'ai commencé à mettre en place les scripts adaptés. Voilà les premiers graphs des interfaces (wifi = 2.4+5, 2.4GHZ, 5GHz et les deux ports phy 0 et 3). Prochaine étape: sortir les stats (traffic et qualité signal) par device. Par la suite je regarderai ce que je peux extraire du pont Philipps Hue. 0 Citer
hpsmartyz2 Posté(e) le 18 février 2022 Posté(e) le 18 février 2022 (modifié) ca m'a couté qques apprentissages en shell, mais voilà la mesure du signal wifi du pc depuis lequel je rédige ce message. l'axe des ordonnées n'est que pour le snr car la puissance wifi se mesure en dbm < 0. j'ai pas trouvé mieux comme representation que de faire 100 - cette valeur et de le ploter ainsi donc ce sont les couleurs qui parlent. par contre je me demande si il n'y a pas un problème avec les stats de l'ONT: c'est pas très parlant car ce n'est pas en bytes/s mais en bytes (en fait en bytes/5min) mais quand même à ce rythme là je suis en train de me faire siphonner tous mon réseau ! Les stats des interfaces internes sont presque plates. Donc, ou je les mesure mal et je suis vraiment en train de me faire aspirer tout, ou bien le compteur de l'ONT est en vrac, ou bien les valeurs sont en bits et non bytes (malgré les variables qui s'appellent RxBytes et TxBytes). si des personnes sont intéressées je peux partager le script pour la livebox 5. Modifié le 18 février 2022 par hpsmartyz2 0 Citer
.Shad. Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 Normalement si c'est une vitesse que tu veux il te faut plotter la différentielle de la valeur TxBytes sur un temps donné, 1s généralement. 0 Citer
oracle7 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 @hpsmartyz2 Bonjour, Au passage, sacré déterrage de sujet vieux de plus de 14 ans !🤣 Comme toi je fais du monitoring d'informations de ma Livebox (voir mon TUTO) et je suis intéressé par ton script car je constate que tu arrives à récupérer des informations dynamiques pour afficher de belles courbes de suivi. De mon coté, ce qui était possible avec une connexion ADSL ne l'est plus avec la Fibre. Plus moyen de suivre par exemple les flux entrants/sortants Rx/Tx. Aussi je serai bien volontiers preneur d'explications sur le processus que tu utilises pour obtenir ces infos dynamiques car je n'en ai pas trouvé dans le datamodel de la Livebox, non pas qu'elles existent pas mais les tables correspondantes ne sont pas accessibles via des requêtes externes (du moins celles que j'utilise avec sysbus) . D'où ma forte curiosité sur ta méthode. En attendant ta réponse. Cordialement oracle7😉 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 (modifié) @.Shad. oui, rrd permet ça nativement avec un COUNTER (là c'est du GAUGE, mais un peut modifié). Les compteurs de la livebox sont cumulatifs (et se reset à 2^32), mais en fait je calcule moi-même le delta entre deux valeurs successives et c'est ça que j'affiche. Avoir la notion de volume n'est pas inutile. Je ferai sûrement à terme les mêmes graphs en bytes/s par la suite. Dans tous les cas même si c'était exprimé en débit ca ne changerait rien au profil et à la quantité de données échangées. Je vais faire qquess test pour comprendre d'où viennent ces valeurs. il y a 55 minutes, oracle7 a dit : @hpsmartyz2 Bonjour, Au passage, sacré déterrage de sujet vieux de plus de 14 ans !🤣 Comme toi je fais du monitoring d'informations de ma Livebox (voir mon TUTO) et je suis intéressé par ton script car je constate que tu arrives à récupérer des informations dynamiques pour afficher de belles courbes de suivi. De mon coté, ce qui était possible avec une connexion ADSL ne l'est plus avec la Fibre. Plus moyen de suivre par exemple les flux entrants/sortants Rx/Tx. Aussi je serai bien volontiers preneur d'explications sur le processus que tu utilises pour obtenir ces infos dynamiques car je n'en ai pas trouvé dans le datamodel de la Livebox, non pas qu'elles existent pas mais les tables correspondantes ne sont pas accessibles via des requêtes externes (du moins celles que j'utilise avec sysbus) . D'où ma forte curiosité sur ta méthode. En attendant ta réponse. Cordialement oracle7😉 @oracle7 bonjour. oui sacré déterrage mais étant le posteur originel je me suis permis. Sacré boulot ton tuto! Je peux te donner les commandes (curl) sans soucis, mais suis pas sûr de comprendre ce que tu entends par dynamique. Modifié le 19 février 2022 par hpsmartyz2 0 Citer
oracle7 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 @hpsmartyz2 Bonjour, il y a 7 minutes, hpsmartyz2 a dit : Je peux te donner les commandes (curl) sans soucis, Je prends !🤣 il y a 8 minutes, hpsmartyz2 a dit : mais suis pas sûr de comprendre ce que tu entends par dynamique. La quasi totalité des données accessibles sur la Livebox sont des données que je qualifie de "statiques" car elles n'évoluent que très peu dans le temps, du moins à intervalle assez grand. Par ex les informations système qui sont affichées dans l'interface d'admin de la Livebox à une ou deux exceptions près. Les données dites "dynamiques" sont celles qui changent à intervalle très court par ex : les débits (Nombres d'octets échangés i.e. envoyés/reçus) WiFi, WAN, LAN. C'est justement ceux-là que je souhaite monitorer et afficher leurs courbes d'évolution dans le temps et comme tu sembles le faire, j'aimerai bien comprendre comment tu y arrives et ainsi voir si je peux transposer cela pour compléter ma méthode. Cordialement oracle7😉 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 d'ac ! tu veux que je poste ici ou dans ton thread? c'est pas donnant-donnant mais je suis super preneur du data model que tu aurais réussis à extraire, car moi je n'ai les commandes que grâce à l'inspection des appels faits via l'interface (grace aux outils dev de chrome). @oracle7 0 Citer
oracle7 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 @hpsmartyz2 Bonjour, il y a 39 minutes, hpsmartyz2 a dit : je suis super preneur du data model que tu aurais réussis à extraire, Le datamodel ne s'extrait pas dans sa globalité. il faut faire des requêtes ciblées. Je te laisse lire mon TUTO, tout est expliqué dans le préambule d'introduction et les liens sont fournis pour l'usage du script sysbus.py qui te permettra d'analyser le datamodel de la Livebox. Tu en sortiras les vues qui t’intéresse. Inspires-toi aussi des requêtes que j'ai faites dans le shell script du TUTO. Rien de bien compliqué, tout est commenté. Cordialement oracle7😉 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 @oracle7 oui mais sysbus je ne l'ai que sous cygwin sur pc et je n'ai pas tous les autres librairies pour extraire le dm. pas envie non plus d'instaler sysbus sur le nas. tant pis. par contre tu m'as pas dit, les commandes tu veux ici ou tu préfères qu'elles alimentent ton thread? 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 (modifié) je fais ici. la base vient des scripts que l'on trouve sur le web (notamment ici) et les commandes spécifiques sont dérivées d'une analyse des requêtes faites lors de la navigation sur l'interface web et inspectées via les outils "développeur" intégrés dans chrome. myLivebox=#ip-de-la-box myPassword=#mdp-de-la-box myBashDir=#un-chemin-sur-le-syno myOutput=$myBashDir/myOutput.txt myCookies=$myBashDir/myCookies.txt curl -s -o "$myOutput" -X POST -c "$myCookies" -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah-Login' -d "{\"service\":\"sah.Device.Information\",\"method\":\"createContext\",\"parameters\":{\"applicationName\":\"so_sdkut\",\"username\":\"admin\",\"password\":\"$myPassword\"}}" http://$myLivebox/ws > /dev/null myContextID=$(tail -n1 "$myOutput" | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/",//1' | sed 's/"groups":"http,admin//1' | sed 's/"}}//1') #traffic wifi #2.4GHz + 5GHz WifiStats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NMC.Wifi\",\"method\":\"getStats\",\"parameters\":{}}" http://$myLivebox/ws` WifiStatsRxBytes=`echo $WifiStats | cut -d"{" -f3 | cut -d"," -f1 | cut -d":" -f2` WifiStatsTxBytes=`echo $WifiStats | cut -d":" -f5 | cut -d"}" -f1` #2.4GHz wl0Stats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.wl0\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws` Wifi2StatsRxBytes=`echo $wl0Stats | cut -d"{" -f3 | cut -d"," -f3 | cut -d":" -f2` Wifi2StatsTxBytes=`echo $wl0Stats | cut -d"{" -f3 | cut -d"," -f4 | cut -d":" -f2` #5GHz eth4Stats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.eth4\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws` Wifi5StatsRxBytes=`echo $eth4Stats | cut -d"{" -f3 | cut -d"," -f3 | cut -d":" -f2` Wifi5StatsTxBytes=`echo $eth4Stats | cut -d"{" -f3 | cut -d"," -f4 | cut -d":" -f2` #port eth 1 eth0Stats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.eth0\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws` Lan0StatsRxBytes=`echo $eth0Stats | cut -d"{" -f3 | cut -d"," -f3 | cut -d":" -f2` Lan0StatsTxBytes=`echo $eth0Stats | cut -d"{" -f3 | cut -d"," -f4 | cut -d":" -f2` #port eth 2 eth1Stats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.eth1\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws` Lan1StatsRxBytes=`echo $eth1Stats | cut -d"{" -f3 | cut -d"," -f3 | cut -d":" -f2` Lan1StatsTxBytes=`echo $eth1Stats | cut -d"{" -f3 | cut -d"," -f4 | cut -d":" -f2` #port eth 3 eth2Stats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.eth2\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws` Lan2StatsRxBytes=`echo $eth2Stats | cut -d"{" -f3 | cut -d"," -f3 | cut -d":" -f2` Lan2StatsTxBytes=`echo $eth2Stats | cut -d"{" -f3 | cut -d"," -f4 | cut -d":" -f2` #port eth 4 eth3Stats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.eth3\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws` Lan3StatsRxBytes=`echo $eth3Stats | cut -d"{" -f3 | cut -d"," -f3 | cut -d":" -f2` Lan3StatsTxBytes=`echo $eth3Stats | cut -d"{" -f3 | cut -d"," -f4 | cut -d":" -f2` #Wan veip0Stats=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"NeMo.Intf.veip0\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws` WanStatsRxBytes=`echo $veip0Stats | cut -d"{" -f3 | cut -d"," -f3 | cut -d":" -f2` WanStatsTxBytes=`echo $veip0Stats | cut -d"{" -f3 | cut -d"," -f4 | cut -d":" -f2` #Signal Strength per Device #dev de la forme: "Devices.Device.mac-adddress" devInfo=`curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"$dev\",\"method\":\"get\",\"parameters\":{}}" http://$myLivebox/ws` searchstring="SignalStrength" rest=${devInfo#*$searchstring} pos=$(( ${#devInfo} - ${#rest} - ${#searchstring} )) sub=${devInfo:$pos:44} signalStrength=`echo $sub | cut -d"," -f1 | cut -d":" -f2` snr=`echo $sub | cut -d"," -f2 | cut -d":" -f2` on peut aussi récupérer les stats de traffic par device via la "MIB" lan mais elle est assez lourde donc je cherche un autre moyen. Manifestement il y a un event listener qui se trimbale dans le code et qui push les stats de traffic de chacun des devices mais je n'ai pas réussit à me brancher dessus. si quelqu'un sait, je suis preneur Modifié le 19 février 2022 par hpsmartyz2 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 Il y a 1 heure, oracle7 a dit : @hpsmartyz2 Bonjour, Le datamodel ne s'extrait pas dans sa globalité. il faut faire des requêtes ciblées. Je te laisse lire mon TUTO, tout est expliqué dans le préambule d'introduction et les liens sont fournis pour l'usage du script sysbus.py qui te permettra d'analyser le datamodel de la Livebox. Tu en sortiras les vues qui t’intéresse. Inspires-toi aussi des requêtes que j'ai faites dans le shell script du TUTO. Rien de bien compliqué, tout est commenté. Cordialement oracle7😉 soit dit en passant, sauf erreur, le data model peut s'extraire dans sa globalité. ce que je cherchais c'était la version uml qui me semble plus exploitable, ainsi que le graph des interfaces. 0 Citer
oracle7 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 @hpsmartyz2 Bonjour, MERCI pour tes requêtes. J'y ai découvert des services et méthodes que je n'avais pas encore identifiées. Dès que j'aurais une minute devant moi, je regarderai ce que ramènent comme données ces services/méthodes. Sinon à la vue des tes graphiques ci-dessus, quelle fréquence d'acquisition de données avais-tu retenue , car moi, pour l'instant dans mon script je ne acquiers les données que tous les 12h00 puisqu'elles étaient "statiques". Maintenant pour prendre en compte des données "dynamiques" c'est à dire acquises (je l'imagine au moins) toutes les 30 s à 1 min, cela va être une autre paire de manches pour intégrer cela dans mon script car je ne souhaite pas trop solliciter la Livebox afin de ne pas la déstabiliser, déjà quelle a un comportement erratique (elle n'aime pas et plante) quand on fait trop de requêtes consécutives sur elle, mais bon je vais y réfléchir à tête reposée. Sinon tes graphes, c'est du Cacti je suppose ? car il faudra que je ramène cela sous graphana pour l'inclure à mon monitoring global (NAS, Docker, Caméras de surveillance, etc ...). Il y a 1 heure, hpsmartyz2 a dit : oui mais sysbus je ne l'ai que sous cygwin sur pc et je n'ai pas tous les autres librairies pour extraire le dm. pas envie non plus d'instaler sysbus sur le nas. tant pis. Pour ma part, j'ai installé Ubuntu 20.04 via le Windows Service pour Linux (WSL 2) sur mon Win11 et j'ai ensuite installé le script sysbus selon le Readme.md du Github. C'est hyper simple et souple sans "quitter" l'environnement Win11. il y a 4 minutes, hpsmartyz2 a dit : ce que je cherchais c'était la version uml qui me semble plus exploitable Tu l'obtiens avec une commande du type : sysbus <service> -model qui va te créer des diagramme de classes UML du service en question et qui sont consultables ensuite avec l'outil plantuml ou tout autre outil capable d'ouvrir des fichier .svg. il y a 13 minutes, hpsmartyz2 a dit : ainsi que le graph des interfaces. Là c'est la commande : sysbus -graph qui répondra à ton besoin. Cordialement oracle7😉 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 oui, ce sont des graphs Cacti, après tout on est dans le thread à ce sujet. les requêtes sont faites toutes les 5min. le code que je t'ai donné place les valeurs dans des variables, c'est indépendant de Cacti. A toi de voir comment tu utilises ces variables pour finalement injecter la valeur dans ton infrastructure de monitoring. pour ce qui est de sysbus, j'ai lu la doc, pas d'inquiétude 😉 En fait je ne tirerai pas plus de l'uml ou de la topo que du modèle en texte que j'ai déjà. le problème est que le modèle ne donne pas les nom des fonctions intéressantes à appeler. J'esperais que tu puisses les avoir. La meilleure méthode, à ma connaissance, reste donc d'observer les requêtes dans un navigateur, même si c'est assez limité. Dans le jours prochains je tenterai de sortir les stats de traffic par device. je te posterai la requête attention, pour la requête de la qualité du wifi il faut créer une variable 'dev' qui contient: Devices.Devices.12:34:56:78:90:AB où '12:34:56:78:90:AB' est l'adresse MAC du Device en question dernière note il est possible de récupérer dans la même mib les stats de traffic et de qualité de signal: NeMo.Intf.eth4 / getMIBs NeMo.Intf.wl0 / getMIBs 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 je poste des requêtes que j'avais collectées au cas où certains y trouvent leur bonheur: Je n'ai cependant pas réussi à déterminer comment passer les paramètres dans les commandes curl ... {service: "DeviceInfo", method: "get", parameters: {}} {service: "NMC", method: "get", parameters: {}} {service: "UserInterface", method: "getLanguage", parameters: {}} {service: "UserInterface", method: "getState", parameters: {}} {service: "UserManagement", method: "getUser", parameters: {name: "admin"}} {service: "HTTPService", method: "getCurrentUser", parameters: {}} {service: "Manifests", method: "retrieve", parameters: {user: "admin", option: "wm_settings"}} {service: "IoTService", method: "getStatus", parameters: {}} {service: "NMC", method: "getWANStatus", parameters: {}} {service: "NMC.OrangeTV", method: "getIPTVStatus", parameters: {}} {service: "VoiceService.VoiceApplication", method: "listTrunks", parameters: {}} {service: "NMC", method: "getVoIPConfig", parameters: {}} {service: "NMC.Wifi", method: "get", parameters: {}} {service: "VoiceService.VoiceApplication", method: "getCallList", parameters: [{line: "1"}]} {service: "VoiceService.VoiceApplication", method: "listGroups", parameters: {}} {service: "NMC", method: "get", parameters: {}} {service: "NMC.OrangeTV", method: "getIPTVConfig", parameters: {}} {service: "Scheduler", method: "getCompleteSchedules", parameters: {type: "WLAN"}} {service: "Time", method: "getTime", parameters: {type: "WLAN"}} {service: "Devices", method: "get", parameters: {expression: "voice handset physical"}} {service: "NeMo.Intf.guest", method: "getMIBs", parameters: {mibs: "wlanvap"}} {service: "NeMo.Intf.lan", method: "getMIBs", parameters: {mibs: "base wlanradio"}} {service: "NeMo.Intf.data", method: "getMIBs", parameters: {mibs: "dhcp"}} {service: "NMC", method: "getLANIP", parameters: {}} {service: "DHCPv4.Server", method: "getDHCPServerPool", parameters: {id: "default"}} {service: "Scheduler", method: "getCompleteSchedules", parameters: {type: "ToD"}} {service: "DHCPv4.Server.Pool.default", method: "getStaticLeases", parameters: "default"} {service: "Devices", method: "get", parameters: {expression: ".Active==true"}} {service: "DHCPv4.Server.Pool.default", method: "getStaticLeases", parameters: "default"} {service: "TopologyDiagnostics", method: "buildTopology", parameters: {SendXmlFile: false}} ah bah si, je viens de trouver 😀 pour passer {service: "NeMo.Intf.wl0", method: "getMIBs", parameters: {mibs: "wlanvap"}} il faut écrire: {\"service\":\"NeMo.Intf.wl0\",\"method\":\"getMIBs\",\"parameters\":{\"mibs\": \"wlanvap\"}} dans la commande curl 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 une commande pour récupérer l'état de la mémoire de la box: curl -s -o "$myBashDir/device.txt" -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"DeviceInfo.MemoryStatus\",\"method\":\"get\",\"parameters\":{}}" http://$myLivebox/ws 0 Citer
hpsmartyz2 Posté(e) le 19 février 2022 Posté(e) le 19 février 2022 @oracle7 j'ai trouvé beaucoup mieux pour récupérer le traffic des interfaces: curl -s -o "$myBashDir/hl.txt" -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"HomeLan.Interface.wl0.Stats\",\"method\":\"get\",\"parameters\":{}}" http://$myLivebox/ws et changer le service par les noms suivants, selon l'interface voulue: instance 1: 'sysbus.HomeLan.Interface.wl0' (name: 1) parameter: FriendlyName : string = '2.4GHz-Private_SSID' parameter: Name : string = 'wl0' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '2968' instance 2: 'sysbus.HomeLan.Interface.eth4' (name: 2) parameter: FriendlyName : string = '5GHz-Private_SSID' parameter: Name : string = 'eth4' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '2968' instance 3: 'sysbus.HomeLan.Interface.eth0' (name: 3) parameter: FriendlyName : string = 'eth1' parameter: Name : string = 'eth0' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '2967' instance 4: 'sysbus.HomeLan.Interface.eth1' (name: 4) parameter: FriendlyName : string = 'eth2' parameter: Name : string = 'eth1' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '0' instance 5: 'sysbus.HomeLan.Interface.eth2' (name: 5) parameter: FriendlyName : string = 'eth3' parameter: Name : string = 'eth2' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '0' instance 6: 'sysbus.HomeLan.Interface.eth3' (name: 6) parameter: FriendlyName : string = 'eth4' parameter: Name : string = 'eth3' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '2968' instance 7: 'sysbus.HomeLan.Interface.eth3_wan' (name: 7) parameter: FriendlyName : string = 'WAN_Ethernet' parameter: Name : string = 'eth3' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '2968' instance 8: 'sysbus.HomeLan.Interface.vlan_data' (name: 8) parameter: FriendlyName : string = 'WAN_Ethernet-Internet' parameter: Name : string = 'vlan_data' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 9: 'sysbus.HomeLan.Interface.vlan_multi' (name: 9) parameter: FriendlyName : string = 'WAN_Ethernet-MultiServices' parameter: Name : string = 'vlan_multi' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 10: 'sysbus.HomeLan.Interface.vlan_voip' (name: 10) parameter: FriendlyName : string = 'WAN_Ethernet-VoIP' parameter: Name : string = 'vlan_voip' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 11: 'sysbus.HomeLan.Interface.vlan_iptv1' (name: 11) parameter: FriendlyName : string = 'WAN_Ethernet-IPTV_VOD' parameter: Name : string = 'vlan_iptv1' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 12: 'sysbus.HomeLan.Interface.vlan_iptv2' (name: 12) parameter: FriendlyName : string = 'WAN_Ethernet-IPTV_Live' parameter: Name : string = 'vlan_iptv2' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 13: 'sysbus.HomeLan.Interface.veip0' (name: 13) parameter: FriendlyName : string = 'WAN_GPON' parameter: Name : string = 'veip0' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '2968' instance 14: 'sysbus.HomeLan.Interface.gvlan_data' (name: 14) parameter: FriendlyName : string = 'WAN_GPON-Internet' parameter: Name : string = 'gvlan_data' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 15: 'sysbus.HomeLan.Interface.gvlan_multi' (name: 15) parameter: FriendlyName : string = 'WAN_GPON-MultiServices' parameter: Name : string = 'gvlan_multi' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '2966' instance 16: 'sysbus.HomeLan.Interface.gvlan_voip' (name: 16) parameter: FriendlyName : string = 'WAN_GPON-VoIP' parameter: Name : string = 'gvlan_voip' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 17: 'sysbus.HomeLan.Interface.gvlan_iptv1' (name: 17) parameter: FriendlyName : string = 'WAN_GPON-IPTV_VOD' parameter: Name : string = 'gvlan_iptv1' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 18: 'sysbus.HomeLan.Interface.gvlan_iptv2' (name: 18) parameter: FriendlyName : string = 'WAN_GPON-IPTV_Live' parameter: Name : string = 'gvlan_iptv2' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '2959' instance 19: 'sysbus.HomeLan.Interface.wlguest2' (name: 19) parameter: FriendlyName : string = '2.4GHz-Guest_SSID' parameter: Name : string = 'wlguest2' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '0' instance 20: 'sysbus.HomeLan.Interface.wlguest5' (name: 20) parameter: FriendlyName : string = '5GHz-Guest_SSID' parameter: Name : string = 'wlguest5' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '0' pour récupérer les stats du wan: curl -s -o "$myBashDir/hl.txt" -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"HomeLan\",\"method\":\"getWANCounters\",\"parameters\":{}}" http://$myLivebox/ws 0 Citer
oracle7 Posté(e) le 20 février 2022 Posté(e) le 20 février 2022 @hpsmartyz2 Bonjour, Il y a 17 heures, hpsmartyz2 a dit : le problème est que le modèle ne donne pas les nom des fonctions intéressantes à appeler. J'esperais que tu puisses les avoir. Non et pour cause, même si on voit des choses dans le datamodel ce n'est pas pour autant que l'on faire une requête pour récupérer les données correspondantes. Orange verrouille/protège ainsi son datamodel. Par ailleurs comme j'utilise ma Livebox comme "simple modem" car j'ai un routeur derrière en DMZ qui est bien plus performant, je ne me suis pas intéressé à certains services/méthodes que tu cites. Ce qui touche pas exemple au Wifi car il est désactivé sur la Livebox au profit du Wifi de mon routeur et parce que je n'en avais pas compris l'usage ou la pertinence des infos qu'elles comportaient. Je serai plus porté à récupérer le traffic E/S coté WAN et de même coté LAN afin de voici ce qui se passe globalement. Je constate aussi la qu'entre ma Livebox 4 et ta Livebox 5, le datamodel est différent. Bien que je sois en Fibre j'ai encore dans celui-ci des infos liées à l'ADSL et au VDSL (certainement pour des raisons de compatibilité d'usage de la Livebox) alors que chez toi il y a des infos par ex liées au WAN_GPON (veip0) que je n'ai pas. Il y a 17 heures, hpsmartyz2 a dit : Dans le jours prochains je tenterai de sortir les stats de traffic par device. je te posterai la requête Oui je serai curieux de voir. Cordialement oracle7😉 0 Citer
hpsmartyz2 Posté(e) le 20 février 2022 Posté(e) le 20 février 2022 (modifié) Bonjour ah! je n'avais pas compris que tu étais sous LB4. l'instance du modèle doit être différente, mais pas le modèle en soit. Les commandes pour accès aux stats que j'ai postées hier soir je les ai trouvées dans le data model, tu dois pouvoir faire de même avec celui de ta lb. Je serais étonné qu'Orange ait des modèles par box. c'est ingérable. donc le modèle doit être unique et s'instancie de différentes manières dépendant de la box. Dans le cas des interfaces plus haut, ce sont des instances de l'objet générique interface et c'est donc normal que je n'aie rien relatif à l'A/V-DSL. je crois néanmoins que le nom de certaines interfaces pourrait avoir changé entre LB4 et LB5 Ultimement tu passes des commandes curl avec les noms de fonctions récupérées dans le dm ou via chrome et tu vois ce que ça rend. Il y a 1 heure, oracle7 a dit : oui je serai curieux de voir. je suis en train de retravailler complètement le script car j'ai pas mal de devices. Tu m'as fait un peu peur et je ne voudrais pas qu'un burst d'une cinquantaine de requêtes simultanées pour récupérer la qualité du signal, les stats des devices et le traffic des interfaces plus qques autres trucs ne pourrissent ma box donc je vais tout faire en un appel et ferai Cacti traiter le résultat de manière indépendante. Modifié le 20 février 2022 par hpsmartyz2 0 Citer
oracle7 Posté(e) le 20 février 2022 Posté(e) le 20 février 2022 (modifié) @hpsmartyz2 Bonjour, il y a 32 minutes, hpsmartyz2 a dit : Je serais étonné qu'Orange ait des modèles par box. c'est ingérable. donc le modèle doit être unique et s'instancie de différentes manières dépendant de la box. Dans le cas des interfaces plus haut, ce sont des instances de l'objet générique interface et c'est donc normal que je n'aie rien relatif à l'A/V-DSL. Bah manifestement non, les datamodel sont bien différents. Avec Orange et leur gestion de leurs Dev, plus rien ne m'étonne 🤣 Pour preuve l'extrait du datamodel Livebox4 pour le service "HomeLan.Interface" (je n'utilise pas la fonction 'curl' mais le script 'sysbus' c'est bien plus simple à l'usage et cela revient au même en terme de sortie ...) : Citation root@MonNAS:~# sysbus HomeLan.Interface -model =========================================== level 0 OBJECT NAME: 'HomeLan.Interface' (name: Interface) parameter: FriendlyName : string = '' parameter: Name : string = '' parameter: Alias : string = '' parameter: NumberOfStoredMeasures : uint32 = '0' --> templateInfo 1 --> instances 27 instance 1: 'HomeLan.Interface.wl0' (name: 1) parameter: FriendlyName : string = '2.4GHz-Private_SSID' parameter: Name : string = 'wl0' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '0' instance 2: 'HomeLan.Interface.eth6' (name: 2) parameter: FriendlyName : string = '5GHz-Private_SSID' parameter: Name : string = 'eth6' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '0' instance 3: 'HomeLan.Interface.wlguest2' (name: 3) parameter: FriendlyName : string = '2.4GHz-Guest_SSID' parameter: Name : string = 'wlguest2' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '0' instance 4: 'HomeLan.Interface.wlguest5' (name: 4) parameter: FriendlyName : string = '5GHz-Guest_SSID' parameter: Name : string = 'wlguest5' parameter: Alias : string = 'WiFi' parameter: NumberOfStoredMeasures : uint32 = '0' instance 5: 'HomeLan.Interface.eth1' (name: 6) parameter: FriendlyName : string = 'eth1' parameter: Name : string = 'eth1' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '8680' instance 6: 'HomeLan.Interface.eth2' (name: 7) parameter: FriendlyName : string = 'eth2' parameter: Name : string = 'eth2' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '8680' instance 7: 'HomeLan.Interface.eth3' (name: 😎 parameter: FriendlyName : string = 'eth3' parameter: Name : string = 'eth3' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '0' instance 8: 'HomeLan.Interface.eth4' (name: 9) parameter: FriendlyName : string = 'eth4' parameter: Name : string = 'eth4' parameter: Alias : string = 'Eth' parameter: NumberOfStoredMeasures : uint32 = '0' instance 9: 'HomeLan.Interface.dsl0' (name: 10) parameter: FriendlyName : string = 'xDSL' parameter: Name : string = 'dsl0' parameter: Alias : string = '' parameter: NumberOfStoredMeasures : uint32 = '0' instance 10: 'HomeLan.Interface.dsl0_sync' (name: 11) parameter: FriendlyName : string = 'xDSL-Sync' parameter: Name : string = 'dsl0' parameter: Alias : string = '' parameter: NumberOfStoredMeasures : uint32 = '0' instance 11: 'HomeLan.Interface.atm_data' (name: 12) parameter: FriendlyName : string = 'ADSL-Internet' parameter: Name : string = 'atm_data' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 12: 'HomeLan.Interface.atm_multi' (name: 13) parameter: FriendlyName : string = 'ADSL-MultiServices' parameter: Name : string = 'atm_multi' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 13: 'HomeLan.Interface.atm_voip' (name: 14) parameter: FriendlyName : string = 'ADSL-VoIP' parameter: Name : string = 'atm_voip' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 14: 'HomeLan.Interface.atm_iptv1' (name: 15) parameter: FriendlyName : string = 'ADSL-IPTV_VOD' parameter: Name : string = 'atm_iptv1' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 15: 'HomeLan.Interface.atm_iptv2' (name: 16) parameter: FriendlyName : string = 'ADSL-IPTV_Zapping' parameter: Name : string = 'atm_iptv2' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 16: 'HomeLan.Interface.atm_iptv3' (name: 17) parameter: FriendlyName : string = 'ADSL-IPTV_Live1' parameter: Name : string = 'atm_iptv3' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 17: 'HomeLan.Interface.atm_iptv4' (name: 18) parameter: FriendlyName : string = 'ADSL-IPTV_Live2' parameter: Name : string = 'atm_iptv4' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 18: 'HomeLan.Interface.vvlan_data' (name: 19) parameter: FriendlyName : string = 'VDSL-Internet' parameter: Name : string = 'vvlan_data' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 19: 'HomeLan.Interface.vvlan_multi' (name: 20) parameter: FriendlyName : string = 'VDSL-MultiServices' parameter: Name : string = 'vvlan_multi' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 20: 'HomeLan.Interface.vvlan_voip' (name: 21) parameter: FriendlyName : string = 'VDSL-VoIP' parameter: Name : string = 'vvlan_voip' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 21: 'HomeLan.Interface.vvlan_iptv1' (name: 22) parameter: FriendlyName : string = 'VDSL-IPTV' parameter: Name : string = 'vvlan_iptv1' parameter: Alias : string = 'xDSL_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 22: 'HomeLan.Interface.eth0' (name: 23) parameter: FriendlyName : string = 'WAN_Ethernet' parameter: Name : string = 'eth0' parameter: Alias : string = '' parameter: NumberOfStoredMeasures : uint32 = '8680' instance 23: 'HomeLan.Interface.vlan_data' (name: 24) parameter: FriendlyName : string = 'WAN_Ethernet-Internet' parameter: Name : string = 'vlan_data' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 24: 'HomeLan.Interface.vlan_multi' (name: 25) parameter: FriendlyName : string = 'WAN_Ethernet-MultiServices' parameter: Name : string = 'vlan_multi' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '8680' instance 25: 'HomeLan.Interface.vlan_voip' (name: 26) parameter: FriendlyName : string = 'WAN_Ethernet-VoIP' parameter: Name : string = 'vlan_voip' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 26: 'HomeLan.Interface.vlan_iptv1' (name: 27) parameter: FriendlyName : string = 'WAN_Ethernet-IPTV_VOD' parameter: Name : string = 'vlan_iptv1' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '0' instance 27: 'HomeLan.Interface.vlan_iptv2' (name: 28) parameter: FriendlyName : string = 'WAN_Ethernet-IPTV_Live' parameter: Name : string = 'vlan_iptv2' parameter: Alias : string = 'WAN_Virtual' parameter: NumberOfStoredMeasures : uint32 = '8680' =========================================== level 1 OBJECT NAME: 'HomeLan.Interface.Stats' (name: Stats) parameter: BytesSent : uint64 = '0' parameter: BytesReceived : uint64 = '0' --> instances 0 Compares-le à ce que tu as donné dans ton précédent post pour le même service (partir de l'instance 7 chez toi et de l'instance 9 chez moi) et tu verras ... il y a 32 minutes, hpsmartyz2 a dit : Tu m'as fait un peu peur et je ne voudrais pas qu'un burst d'une cinquantaine de requêtes simultanées pour récupérer la qualité du signal, les stats des devices et le traffic des interfaces plus qques autres trucs ne pourrissent ma box Le problème est qu'une requête te ramène les données à un instant T (c'est en quelque sorte une photo). Donc si tu veux visualiser une évolution dans le temps (donc faire une vidéo ou un assemblage ontinu de photos) il te faut faire une requête (photo) tous les x sec/min. Cette fréquence d'acquisition est à affiner pour ne pas charger la Livebox. Par exemple, pour le monitoring du NAS en SNMP, la fréquence d'acquisition standard de telegraf est toutes les 30 sec. Je crains que ce soit beaucoup trop fréquent pour ne pas déstabiliser la Livebox qui alors passerait le plus clair de son temps à répondre aux requêtes d'où j'imagine une charge trop importante pour son processeur et système d'exploitation. Mais ce n'est que mon avis , je peux me tromper aussi ... Cordialement oracle7😉 Modifié le 20 février 2022 par oracle7 0 Citer
hpsmartyz2 Posté(e) le 20 février 2022 Posté(e) le 20 février 2022 (modifié) le problème n'est pas tant le numéro de l'instance ni leur nombre mais plutôt de remarquer que sur la box4 l'interface Wifi 5GHz s'appelle eth6 alors qu'elle s'appelle eth4 sur la LB5. Néanmoins, dans les deux cas l'objet Interface reste le même donc le modèle générique est identique, au moins à ce sujet. ca ne sert pas à grand chose de récupérer les stats trop fréquemment. Sur des routeurs de coeur de réseau qui traitent des tera en transit le minimum théorique est de l'ordre de 10s et le cas le plus fréquent pratique c'est 1 à 5 min pour des stats de débit. ca dépend bien sûr de l'utilisation mais la surveillance du traffic n'est pas faite pour détecter des évènements nécessitant une réponse rapide, inutile donc d'avoir l'info très fréquemment et la LB n'est pas un routeur de coeur. avec mon script actuel et sa liaison à cacti je fais je lance le script autant de fois que j'ai de graphs et chaque appel au script génère une authentification et extrait le/les paramètre(s) necessaire(s) pour le graph ayant généré la requête. chaque graph est mis à jour toutes les 5 minutes. donc si je me retrouve avec +70 graphs ca va faire un burst de 70 requêtes auth+extraction toutes les 5 min pour optimiser un peu je vais faire 1 requête d'authentification + extraction des 70 paramètres toutes les 5min, tout stocker dans une base et faire cacti interroger cette base, indépendamment. Modifié le 20 février 2022 par hpsmartyz2 0 Citer
hpsmartyz2 Posté(e) le 11 mars 2022 Posté(e) le 11 mars 2022 (modifié) Bon, vu que je suis pas super doué en ash ça m'a pris un peu de temps, ainsi que farfouiller dans les recoins de la Livebox 5. Pour ceux que cela intéresse voilà mon script. Il extrait les stats de trafic des interfaces wifi, lan, wan de la box les stats de trafic des interfaces wifi du répéteur la puissance du signal et le rapport signal sur bruit de chacun des terminaux connectés (à la box ou au répéteur) la mémoire vive disponible sur la box je ne récupère que les port 1 (eth0) et 4 (eth3) du lan, mais ça se généralise aux deux autres très simplement. Je compléterai ce script au fur et à mesure avec d'autres paramètres. Pour l'instant je n'ai pas encore trouvé comment extraire les stats des terminaux filaires. Plus précisément j'ai trouvé un moyen (récupérer les flow stats) mais qui n'est pas le plus évident qui soit et donc il faut que j'y travaille encore. Le script inscrit les paramètres dans un fichier texte selon un format donné mais ce n'est pas la partie intéressante. Ce qui est susceptible de vous intéresser c'est l'ensemble des fonctions appelées. #!/bin/sh # credits to https://blog.tetsumaki.net/ for LB connection/authentication method lbDataDir=/var/services/web/cacti/scripts/livebox if [ -f $lbDataDir/lock ]; then echo "lock file should not exist" else touch $lbDataDir/lock myLivebox="ip-de-la-box" myExtender="ip-du-repeteur" passwd="mot-de-passe-de-la-box/du-repeteur" lbOutput=$lbDataDir/lbOutput.txt lbCookies=$lbDataDir/lbCookies.txt extOutput=$lbDataDir/extOutput.txt extCookies=$lbDataDir/extCookies.txt rm $lbDataDir/livebox-infos.txt touch $lbDataDir/livebox-infos.txt #***********************************# # LIVEBOX # #***********************************# #connect to livebox curl -s -o "$lbOutput" -X POST -c "$lbCookies" -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah-Login' -d "{\"service\":\"sah.Device.Information\",\"method\":\"createContext\",\"parameters\":{\"applicationName\":\"so_sdkut\",\"username\":\"admin\",\"password\":\"$passwd\"}}" http://$myLivebox/ws > /dev/null lbContextID=$(tail -n1 "$lbOutput" | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/",//1' | sed 's/"groups":"http,admin//1' | sed 's/"}}//1') #Get traffic stats of interfaces intfList="veip0 eth0 eth3 wl0 eth4" prefix="NeMo.Intf." for intf in $intfList; do srv="${prefix}${intf}" output=$(curl -s -b "$lbCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $lbContextID" -d "{\"service\":\"$srv\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myLivebox/ws) verif=$(echo "$output" | cut -d":" -f2 | cut -d"," -f1) if [ "$verif" = "null" ]; then echo "interface ${intf} does not exist or could not be retreived" else rx=$(echo "$output" | awk -F'RxBytes' '{print $2}' | awk -F\: '{print $2}' | awk -F\, '{print $1}') tx=$(echo "$output" | awk -F'TxBytes' '{print $2}' | awk -F\: '{print $2}' | awk -F\, '{print $1}') echo "lb_$intf>rx:$rx,tx:$tx" >> $lbDataDir/livebox-infos.txt fi done #Get traffic and signal stats of wireless terminals. Only Active Associated Devices are considered. prefix="NeMo.Intf." intfList="wl0 eth4" for intf in $intfList; do srv="${prefix}${intf}" output=$(curl -s -b "$lbCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $lbContextID" -d "{\"service\":\"$srv\",\"method\":\"getStationStats\",\"parameters\":{}}" http://$myLivebox/ws) verif=$(echo "$output" | cut -d":" -f2 | cut -d"," -f1) if [ "$verif" = "null" ]; then echo "error retreiving ${srv}:getStationStats" else n=1 nAD=$(echo "$output" | awk -F'MACAddress' '{print NF-1}') while [ $n -le $nAD ]; do isActive=$(echo "$output" | awk -F'Active' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') mac=$(echo "$output" | awk -F'"MACAddress":' "{print \$$((n+1))}" | awk -F\, '{print $1}' | awk -F\" '{print $2}') if [ "$isActive" = "true" ]; then rx=$(echo "$output" | awk -F'RxBytes' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') tx=$(echo "$output" | awk -F'TxBytes' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') sst=$(echo "$output" | awk -F'"SignalStrength":' "{print \$$((n+1))}" | awk -F\, '{print $1}') snr=$(echo "$output" | awk -F'SignalNoiseRatio' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') sst=$((sst + 100)) if [ $sst -gt 70 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:7,r6:10,r7:20,r8:$((sst - 70)),snr:$snr" elif [ $sst -gt 50 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:7,r6:10,r7:$((sst - 50)),r8:0,snr:$snr" elif [ $sst -gt 40 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:7,r6:$((sst - 40)),r7:0,r8:0,snr:$snr" elif [ $sst -gt 33 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:$((sst - 33)),r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 30 ]; then sig="r1:10,r2:10,r3:10,r4:$((sst - 30)),r5:0,r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 20 ]; then sig="r1:10,r2:10,r3:$((sst - 20)),r4:0,r5:0,r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 10 ]; then sig="r1:10,r2:$((sst - 10)),r3:0,r4:0,r5:0,r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 0 ]; then sig="r1:$sst,r2:0,r3:0,r4:0,r5:0,r6:0,r7:0,r8:0,snr:$snr" fi echo "lb_$mac>rx:$rx,tx:$tx,$sig" >> $lbDataDir/livebox-infos.txt else echo "device ${mac} is Associated but inactive. It might be connected to an extender or could become out of range soon" fi n=$((n + 1)) done fi done output=$(curl -s -b "$lbCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $lbContextID" -d "{\"service\":\"DeviceInfo.MemoryStatus\",\"method\":\"get\",\"parameters\":{}}" http://$myLivebox/ws) verif=$(echo "$output" | cut -d"{" -f2 | cut -d":" -f2) if [ "$verif" = "null" ]; then echo "error retreiving DeviceInfo.MemoryStatus" else mf=$(echo "$output" | awk -F'Free' '{print $2}'| awk -F\: '{print $2}' | awk -F\, '{print $1}' | awk -F\} '{print $1}') echo "$myLivebox>MemFree:$mf" >> $lbDataDir/livebox-infos.txt fi #disconnect from livebox curl -s -b "$lbCookies" -X POST http://$myLivebox/logout rm "$lbCookies" "$lbOutput" #***********************************# # REPETEUR # #***********************************# #connect to extender curl -s -o "$extOutput" -X POST -c "$extCookies" -H 'Content-Type: application/x-sah-ws-4-call+json' -H 'Authorization: X-Sah-Login' -d "{\"service\":\"sah.Device.Information\",\"method\":\"createContext\",\"parameters\":{\"applicationName\":\"so_sdkut\",\"username\":\"admin\",\"password\":\"$passwd\"}}" http://$myExtender/ws > /dev/null extContextID=$(tail -n1 "$extOutput" | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/",//1' | sed 's/"groups":"http,admin//1' | sed 's/"}}//1') #Get traffic stats of interfaces intfList="wl0 vap5g0priv" prefix="NeMo.Intf." for intf in $intfList; do srv="${prefix}${intf}" output=$(curl -s -b "$extCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $extContextID" -d "{\"service\":\"$srv\",\"method\":\"getNetDevStats\",\"parameters\":{}}" http://$myExtender/ws) verif=$(echo "$output" | cut -d":" -f2 | cut -d"," -f1) if [ "$verif" = "null" ]; then echo "interface ${intf} does not exist or could not be retreived" else rx=$(echo "$output" | awk -F'RxBytes' '{print $2}' | awk -F\: '{print $2}' | awk -F\, '{print $1}') tx=$(echo "$output" | awk -F'TxBytes' '{print $2}' | awk -F\: '{print $2}' | awk -F\, '{print $1}') #adding prefix to differenciate intf name between box and extender (only usefull for wl0) echo "ext_$intf>rx:$rx,tx:$tx" >> $lbDataDir/livebox-infos.txt fi done prefix="NeMo.Intf." intfList="wl0 vap5g0priv" for intf in $intfList; do srv="${prefix}${intf}" output=$(curl -s -b "$extCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $extContextID" -d "{\"service\":\"$srv\",\"method\":\"getStationStats\",\"parameters\":{}}" http://$myExtender/ws) verif=$(echo "$output" | cut -d":" -f2 | cut -d"," -f1) if [ "$verif" = "null" ]; then echo "error retreiving ${srv}:getStationStats" else n=1 nAD=$(echo "$output" | awk -F'MACAddress' '{print NF-1}') while [ $n -le $nAD ]; do isActive=$(echo "$output" | awk -F'Active' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') mac=$(echo "$output" | awk -F'"MACAddress":' "{print \$$((n+1))}" | awk -F\, '{print $1}' | awk -F\" '{print $2}') if [ "$isActive" = "true" ]; then rx=$(echo "$output" | awk -F'RxBytes' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') tx=$(echo "$output" | awk -F'TxBytes' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') sst=$(echo "$output" | awk -F'"SignalStrength":' "{print \$$((n+1))}" | awk -F\, '{print $1}') snr=$(echo "$output" | awk -F'SignalNoiseRatio' "{print \$$((n+1))}" | awk -F\: '{print $2}' | awk -F\, '{print $1}') sst=$((sst + 100)) if [ $sst -gt 70 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:7,r6:10,r7:20,r8:$((sst - 70)),snr:$snr" elif [ $sst -gt 50 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:7,r6:10,r7:$((sst - 50)),r8:0,snr:$snr" elif [ $sst -gt 40 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:7,r6:$((sst - 40)),r7:0,r8:0,snr:$snr" elif [ $sst -gt 33 ]; then sig="r1:10,r2:10,r3:10,r4:3,r5:$((sst - 33)),r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 30 ]; then sig="r1:10,r2:10,r3:10,r4:$((sst - 30)),r5:0,r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 20 ]; then sig="r1:10,r2:10,r3:$((sst - 20)),r4:0,r5:0,r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 10 ]; then sig="r1:10,r2:$((sst - 10)),r3:0,r4:0,r5:0,r6:0,r7:0,r8:0,snr:$snr" elif [ $sst -gt 0 ]; then sig="r1:$sst,r2:0,r3:0,r4:0,r5:0,r6:0,r7:0,r8:0,snr:$snr" fi #adding prefix to differenciate terminal mac between box and extender #traffic and signal data are specific to connection point echo "ext_$mac>rx:$rx,tx:$tx,$sig" >> $lbDataDir/livebox-infos.txt else echo "device ${mac} is Associated but inactive. It might be connected to an extender or could become out of range soon" fi n=$((n + 1)) done fi done #disconnect from extender curl -s -b "$extCookies" -X POST http://$myExtender/logout rm "$extCookies" "$extOutput" rm $lbDataDir/lock fi Modifié le 11 mars 2022 par hpsmartyz2 0 Citer
hpsmartyz2 Posté(e) le 12 mars 2022 Posté(e) le 12 mars 2022 La mémoire disponible de la box diminue, c'est peut-être pas bon signe 🤨 0 Citer
oracle7 Posté(e) le 12 mars 2022 Posté(e) le 12 mars 2022 @hpsmartyz2 Bonjour, il y a 46 minutes, hpsmartyz2 a dit : La mémoire disponible de la box diminue, c'est peut-être pas bon signe Tu est sûr de ton coup là sur la mémoire disponible ? A mon humble avis, c'est la mémoire Utilisée que tu affiches dans ton graphe (vu son titre) et du coup ton graphe indiquerait alors que tu consommes moins de mémoire. Chez moi (Livebox 4) j'ai ceci : Cordialement oracle7😉 0 Citer
hpsmartyz2 Posté(e) le 12 mars 2022 Posté(e) le 12 mars 2022 Bonjour, bonne question. j'extraie l'info d'ici: OBJECT NAME: 'sysbus.DeviceInfo.MemoryStatus' (name: MemoryStatus) parameter: Total : uint32 = '490944' parameter: Free : uint32 = '184368' et je plote Free (en ayant pris l'hypothèse qu'il fallait multiplier par 1024. D'où viennent vos chiffres ? Merci. 0 Citer
oracle7 Posté(e) le 12 mars 2022 Posté(e) le 12 mars 2022 @hpsmartyz2 Bonjour, il y a 14 minutes, hpsmartyz2 a dit : D'où viennent vos chiffres ? Comme toi Service DeviceInfo/MemoryStatus et methode get. { "status": { "Total": 959176, "Free": 690768 } } Ce qui est étonnant c'est qu'à la vue de tes chiffres, ta LB5 n'aurait que 512Ko de mémoire alors que j'ai 1Mo sur ma LB4, bizarre, non ? Sinon pour info : Cordialement oracle7😉 0 Citer
Messages recommandés
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.