Accueil > Matériel, Raspberry > Monitorer la bande passante réseau de son Raspberry

Monitorer la bande passante réseau de son Raspberry

En reprenant le schéma de câblage du chenillard dans un article précédent, j’ai écrit un programme en Python pour monitorer la bande passante réseau utilisée.

Voici le contenu du programme :

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time, os

# definit comment on utilise le materiel
# soit avec le numero de pin dans ce cas on met GPIO.BOARD
# ou soit avec le numero GPIO dans ce cas on met GPIO.BCM
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

# on definit les ports GPIO en tant que sortie
GPIO.setup(4, GPIO.OUT)   # LED verte
GPIO.setup(23, GPIO.OUT)  # LED verte
GPIO.setup(24, GPIO.OUT)  # LED jaune
GPIO.setup(17, GPIO.OUT)  # LED jaune
GPIO.setup(18, GPIO.OUT)  # LED rouge
GPIO.setup(27, GPIO.OUT)  # LED rouge

# on initialise toutes les sorties a 0
GPIO.output(4, False)
GPIO.output(23, False)
GPIO.output(24, False)
GPIO.output(17, False)
GPIO.output(18, False)
GPIO.output(27, False)

# on choisit le type interface reseau
interface = "wlan0" # pour le wifi ou eth0 pour ethernet

# on definit les seuils en octets
# Pour le wifi chaque LED represente environ 1Mo/s
# Pour Ethernet chaque LED devra representer environ 2 Mo/s
# il sera necessaire de modifier les valeurs de seuil pour
# Ethernet en multipliant par 2 les valeurs
seuil1 = 1000000
seuil2 = 2000000
seuil3 = 3000000
seuil4 = 4000000
seuil5 = 5000000
seuil6 = 6000000

# on recupere le nombre octets en transmission et reception
cmdrx = ‘cat /sys/class/net/’ + interface + ‘/statistics/rx_bytes’
cmdtx = ‘cat /sys/class/net/’ + interface + ‘/statistics/tx_bytes’
lastrx = int (os.popen(cmdrx).readline().strip())
lasttx = int (os.popen(cmdtx).readline().strip())

# on demarre une boucle
while True:
    # lit les statistiques reseau
    rx = int (os.popen(cmdrx).readline().strip())
    tx = int (os.popen(cmdtx).readline().strip())
    octets = (rx – lastrx) + (tx – lasttx)
    lastrx = rx
    lasttx = tx
    if octets < seuil1:
        GPIO.output(4, False)
        GPIO.output(23, False)
        GPIO.output(24, False)
        GPIO.output(17, False)
        GPIO.output(18, False)
        GPIO.output(27, False)
    if octets >= seuil1 and octets < seuil2:
        GPIO.output(4, True)
        GPIO.output(23, False)
        GPIO.output(24, False)
        GPIO.output(17, False)
        GPIO.output(18, False)
        GPIO.output(27, False)
    if octets >= seuil2 and octets < seuil3:
        GPIO.output(4, True)
        GPIO.output(23, True)
        GPIO.output(24, False)
        GPIO.output(17, False)
        GPIO.output(18, False)
        GPIO.output(27, False)
    if octets >= seuil3 and octets < seuil4:
        GPIO.output(4, True)
        GPIO.output(23, True)
        GPIO.output(24, True)
        GPIO.output(17, False)
        GPIO.output(18, False)
        GPIO.output(27, False)
    if octets >= seuil4 and octets < seuil5:
        GPIO.output(4, True)
        GPIO.output(23, True)
        GPIO.output(24, True)
        GPIO.output(17, True)
        GPIO.output(18, False)
        GPIO.output(27, False)
    if octets >= seuil5 and octets < seuil6:
        GPIO.output(4, True)
        GPIO.output(23, True)
        GPIO.output(24, True)
        GPIO.output(17, True)
        GPIO.output(18, True)
        GPIO.output(27, False)
    if octets >= seuil6:
        GPIO.output(4, True)
        GPIO.output(23, True)
        GPIO.output(24, True)
        GPIO.output(17, True)
        GPIO.output(18, True)
        GPIO.output(27, True)
    time.sleep(1)   

 

Tout est documenté dans le programme; il est possible de modifier les niveaux de seuil, car dans mes tests, j’effectuais un transfert d’un gros fichier et cela ne consommait que 1 Mo/s.

Publicités
Catégories :Matériel, Raspberry Étiquettes : , , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :