- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
NB6 Traffic Monitor
Bonjour à tous,
Récent client fibre et équipé d'une box NB6 je suis étonné de n'avoir aucune fonction pour visualiser le traffic courant, au minimum le traffic fibre entrant et sortant.
Quand je parle du traffic courant je veux dire le nombre de Ko/s circulant actuellement sur la ligne.
J'ai fait pas mal d'investigations, étant dans le développement informatique j'ai eu beaucoup d'espoir quand j'ai découvert les REST APIs de la Box, mais ces APIs (dont la documentation a arrêté d'être mise à jour depuis 2 ans maintenant, quel dommage) ne permettent pas de calculer ce traffic. Pourtant avoir une API retournant les compteurs de bytes pour au moins les ports LAN et Fibre de la box m'aurait semblé une évidence...
J'étais sur le point de me lancer dans le scrapping de l'interface web qui affiche ces compteurs dans les statistiques détaillées lorsque j'ai découvert via un post Allemand que les compteurs de bytes fibre étaient retournés librement sur le port TCP 1287, dans une liste de champs (les compteurs DOWN et UP sont dispos sur les champs 65 & 66). En capturant ces compteurs à fréquence régulière j'ai pu me faire un petit script Python rudimentaire qui affiche l'utilisation réseau.
Mais je voudrai aussi avoir la même chose pour le traffic interne, sur les ports LANs mais aussi pour des appareils connectés en WiFi. Je n'arrive pas à me faire à l'idée que je sois le premier à me poser cette question et peut être que des solutions existent déjà pour afficher ces valeurs simples.
Quelqu'un ici aurait des solutions à proposer ?
Merci d'avance pour votre aide !
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
10/05/2019 10h31
Bonjour,
Pour utilisateurs Windows, il existe un gadget (Network Meter) qui affiche quelques infos intéressantes.
IP LAN et WAN
Débit instantané
Cumul octets (deux compteurs réinitialisables)
Un système de quota
Ainsi que d'autres infos.
Exemple lors d'un speedtest (débit de 3.16 Mo/s)
Ou lors d'un transfert de fichier vers un NAS (113.2 Mo/s)
Il existe des équivalents pour Mac.
Par contre aucune idée si ça existe pour Linux (mais ça ne m'étonnerait pas)
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
Merci beaucoup baloo01fr pour avoir pris le temps de faire cette réponse détaillée.
Par contre si je ne me trompe pas cet outil permet de ne mesurer que le traffic concernant le poste sur lequel il tourne, pas le traffic passant par la NB6 non originaire du PC en question. Car c'est bien là mon problème, je voudrai depuis mon poste principal vérifier tout ce qui passe par le routeur NB6, y compris bien sûr le traffic des autres postes, les appareils WiFi, le STB7, etc...
Avec ma petite bidouille j'arrive à voir assez précisément le traffic WAN en cours UP/DOWN (port Fibre) mais l'idéal ce serait d'avoir aussi le traffic par port LAN de la NB6, plus celui des appareils WiFi. Et je trouve ça couillon car la NB6 a toutes ces infos, il aurait juste suffit de les publier clairement voir d'afficher les débits directement dans la page web ça n'aurait pas été bien compliqué...
Merci encore pour l'aide apportée.
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
10/05/2019 20h34
Dans ce cas, je pense qu'il faudrait faire passer le trafic soit dans un switch manageable (j'ignore si ce type de switch permet de monitorer les débits) ou, probablement plus efficace, un serveur proxy local.
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
Si cela peut être utile à quelqu'un voici ci dessous le petit programme Python en question.
Il affiche d'abord la liste des appareils connectés au NB6 et permet de rapidement identifier les appareils non connus.
Une table dans un fichier JSON "MacAddrTable.txt" à mettre dans le même répertoire que le programme permet de lister les adresses MAC connues et de lui associer un nom.
Si un appareil dans la liste n'a pas une adresse MAC répertoriée dans la liste il est affiché comme "UNKNOWN".
Exemple :
-------------------------------------------------------------------------------------------- ID MAC IP NAME IFACE STATUS -------------------------------------------------------------------------------------------- PC2 00:23:18:77:67:c4 192.168.1.3 PC-Windows lan3 offline STB7 e4:5c:51:d9:de:10 192.168.1.36 STB7 lan2 online iPhone 00:db:70:a2:3e:bf 192.168.1.89 Toto-iPhone wl1 online X3D c8:64:f1:c5:b2:b0 192.168.1.76 lan2 online ###-UNKNOWN-### 3c:56:e4:1b:7f:ae 192.168.1.86 android-78025c382616efca wl1 online Epson Printer a4:ee:57:54:75:42 192.168.1.4 EPSON5F7543 wl1 offline
Avec ceci dans le fichier "MacAddrTable.txt" :
{ "e4:5c:51:d9:de:10": "STB7", "00:23:18:77:67:c4": "PC2", "a4:ee:57:54:75:42": "Epson Printer", "c8:64:f1:c5:b2:b0": "X3D", "00:ce:40:03:58:7c": "PS4", "00:db:70:a2:3e:bf": "iPhone" }
Ensuite le programme affiche l'ensemble du traffic entrant et sortant (tous les appareils confondus) en temps réel (environ une ligne par seconde).
Les unités sont en kilooctets ou megaoctets par seconde :
------------------------ DOWN UP ------------------------ 0 K/s 0 K/s 82 K/s 12 K/s 943 K/s 42 K/s 5.2 M/s 63 K/s 16.8 M/s 13 K/s 322 K/s 8 K/s 0 K/s 0 K/s 0 K/s 0 K/s ...
Le programme :
import socket import time import json import requests from lxml import etree SFR_NB6_IP = '192.168.1.1' SFR_NB6_PORT = 1287 BUFFER_SIZE = 1024 aByteDown = 0 aByteUp = 0 try: with open('MacAddrTable.txt') as aMacTableFile: aMacTable = json.load(aMacTableFile) except: aMacTable = {} aDash = '-' * 92 print(aDash) print('{:<16s}{:<19s}{:<15s}{:<26s}{:<7s}{:<9s}'.format('ID','MAC', 'IP', 'NAME', 'IFACE', 'STATUS')) print(aDash) aDeviceListPage = requests.get('http://' + SFR_NB6_IP + '/api/1.0/?method=lan.getHostsList') aDeviceListTree = etree.fromstring(aDeviceListPage.content) for aDevice in aDeviceListTree.findall('host'): try: aID = aMacTable[aDevice.get('mac')] except: aID = '###-UNKNOWN-###' print('{:<16s}{:<19s}{:<15s}{:<26s}{:<7s}{:<9s}'.format(aID, aDevice.get('mac'), aDevice.get('ip'), aDevice.get('name'), aDevice.get('iface'), aDevice.get('status'))) print('\n') aDash = '-' * 24 print(aDash) print('{:>10s}{:>10s}'.format('DOWN','UP')) print(aDash) aStartTime = time.time() while 1: #get string from SFR Neufbox s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((SFR_NB6_IP, SFR_NB6_PORT)) data = str(s.recv(BUFFER_SIZE)) aNewTime = time.time() s.close() #interpret data into dict d = dict(item.split("=") for item in data.split(";")) aNewByteDown = int(d["65"]) aNewByteUp = int(d["66"]) if (aByteDown): aElapsed = aNewTime - aStartTime; if (aNewByteDown > aByteDown): aDownRate = int(((aNewByteDown - aByteDown) / aElapsed) / 1024) else: aDownRate = 0 if (aDownRate > 1024): aDownRate = round(aDownRate / 1024, 1) aDownUnit = 'M' else: aDownUnit = 'K' aDownStr = str(aDownRate) + ' ' + aDownUnit + '/s' if (aNewByteUp > aByteUp): aUpRate = int(((aNewByteUp - aByteUp) / aElapsed) / 1024) else: aUpRate = 0 if (aUpRate > 1024): aUpRate = round(aUpRate / 1024, 1) aUpUnit = 'M' else: aUpUnit = 'K' aUpStr = str(aUpRate) + ' ' + aUpUnit + '/s' print('{:>10s}{:>10s}'.format(aDownStr, aUpStr)) aByteDown = aNewByteDown aByteUp = aNewByteUp aStartTime = aNewTime
Je tiens à remercier la personne qui a publié l'astuce originale ici.
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
Si quelqu'un est intéressé par mon petit programme Python vous pouvez me contacter directement, je le partagerai avec plaisir.
J'ai essayé de le poster ici mais pour une raison que j'ignore il semblerait que mon post ait été filtré.
Mon programme fait deux choses :
1. Il affiche la liste des appareils connectés à la NB6 et est capable d'identifier les appareils connus et inconnus grace à un petit fichier de configuration des adresses MACs connues.
Par exemple :
-------------------------------------------------------------------------------------------- ID MAC IP NAME IFACE STATUS -------------------------------------------------------------------------------------------- PC2 00:23:18:77:67:c4 192.168.1.3 PC-Windows lan3 offline STB7 e4:5c:51:d9:de:10 192.168.1.36 STB7 lan2 online iPhone 00:db:70:a2:3e:bf 192.168.1.89 Toto-iPhone wl1 online X3D c8:64:f1:c5:b2:b0 192.168.1.76 lan2 online ###-UNKNOWN-### 3c:56:e4:1b:7f:ae 192.168.1.86 android-78025c382616efca wl1 online Epson Printer a4:ee:57:54:75:42 192.168.1.4 EPSON5F7543 wl1 offline
2. Il affiche le débit internet entrant et sortant de la NB6 en temps réel (en kilo ou mega octets par seconde), donc en prenant en compte le traffic de tous les appareils connectés.
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
Bonjour
Concernant ton code que tu voulais poster, je pense que c'est une protection pour qu'il ne soit pas interprété.
Il faut que tu le protèges par les balises prévues à cet effet, dans la barre d'outils du texte enrichi c'est le bouton {i}
@+
Ancien Digiclient de feu le forum Entraide de Numéricable
FTTH 1Gb/s - 400 Mb/s
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
20/09/2019 22h19
Merci Qoissi pour ce script.
J'ai fini par le faire fonctionner sur PC (mais pas sur Synology). Par contre le calcul ne me semble pas correct pour moi. Je suis en ADSL et les champs 65 et 66 n'existent pas. Ce qui ressemble le plus ce sont les 35 et 36, mais au final cela n'est pas cohérnet avec la réalité.
Si quelqu'un a résolu le pb ou bien trouvé un autre moyen d'optenir l'info je suis preneur.
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
Bonjour fred4o et content d'avoir pu t'être (presque) utile.
Effectivement j'ai testé mon script sur une configuration fibre et je ne sais pas pour l'ADSL.
Mais je te recommande de faire tel que je l'ai fait au départ : affiche tous les champs à chaque itération et regarde les valeurs qui changent significativement lorsqu'il y a de l'activité en DOWN et en UP. En principe les compteurs sont en octets mais si ce n'est pas le cas à toi de trouver la conversion pour l'affichage en expérimentant un peu...
Tu peux donner tes progrès ici je t'aiderai si besoin.
À+
- Marquer comme nouveau
- Ajouter aux favoris
- S'abonner à ce post
- S'abonner au fil RSS de ce post
- Imprimer
- Signaler
Bonjour je suis fortement interessé par le logiciel .
Est-il prêt à utiliser ? Car je ne suis pas pro en informatique . Merci