Monitorer ses connexions réseau avec un Raspberry Pi

Logo Raspberry PiBonjour à tous. Aujourd’hui je vous propose un petit script Shell  à installer sur un Raspberry Pi afin de monitorer vos connexions locales, ethernet et wifi ainsi que votre connexion internet, ping, débits montants et descendants, latence…

Ce tuto vous guidera pour la mise en place du script notamment en installant les paquets nécessaire à son utilisation mais aussi à la création d’une « tâche » dans « crontab ». Je ne détaillerai pas dans cet article l’installation de la distribution du Raspberry (dans notre cas Raspbian lite) ni comment se connecter en SSH (beaucoup de tuto présents sur le web).

Installations des paquets nécessaires

Commençons tout d’abord par installer les paquets nécessaires au script. Pour cela connectez vous au Raspberry par SSH et entrer les commandes suivantes :

sudo apt-get update
sudo apt-get install puppet facter dnsutils python-pip
sudo pip install speedtest-cli

Création du script de test

Nous pouvons maintenant créer le script qui nous permettra de réaliser les tests réseaux :

nano testNetwork.sh

Et copier le code suivant (attention à bien tout copier, je sais la mise en page du site est pas super) :

#!/bin/bash

#initialisation des fichiers
if [ ! -e /home/pi/testDebit ]; then
		mkdir /home/pi/testDebit
fi

if [ ! -e /home/pi/testDebit/Ethernet.csv ]; then
        echo "Date;Heure;IP locale;IP distante;Latence locale;Latence distance;Debit descendant;Debit montant" > /home/pi/testDebit/Ethernet.csv
fi

if [ ! -e /home/pi/testDebit/Wifi.csv ]; then
        echo "Date;Heure;IP locale;IP distante;Latence locale;Latence distance;Debit descendant;Debit montant;Signal Wifi" > /home/pi/testDebit/Wifi.csv
fi

#Lancement du script

#Date
testDate=`date "+%d/%m/%y;%H:%M"`

#Script interface ethernet avec coupure interface wifi
ifconfig wlan0 down
ipLocalEth=`facter ipaddress_eth0`
ipDistantEth=`dig +short myip.opendns.com @resolver1.opendns.com`
passerelleEth=`ip -4 route list type unicast dev eth0 exact 0/0 | cut -c 13- | cut -d ' ' -f 1`
latLocalEth=`ping -c 1 -I eth0 $passerelleEth | awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $10}'`
latDistEth=`ping -c 1 -I eth0 8.8.8.8 | awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $10}'`
speedtest-cli > /tmp/ethTest.txt
downTestEth=`grep "Download" /tmp/ethTest.txt | cut -c 11- | cut -d ' ' -f 1`
upTestEth=`grep "Upload" /tmp/ethTest.txt | cut -c 9- | cut -d ' ' -f 1`
ifconfig wlan0 up

echo "$testDate;$ipLocalEth;$ipDistantEth;$latLocalEth;$latDistEth;$downTestEth;$upTestEth" >> /home/pi/testDebit/Ethernet.csv


#Script interface wifi avec coupure interface ethernet
ifconfig eth0 down
ipLocalWlan=`facter ipaddress_wlan0`
ipDistantWlan=`dig +short myip.opendns.com @resolver1.opendns.com`
passerelleWlan=`ip -4 route list type unicast dev wlan0 exact 0/0 | cut -c 13- | cut -d ' ' -f 1`
latLocalWlan=`ping -c 1 -I wlan0 $passerelleWlan | awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $10}'`
latDistWlan=`ping -c 1 -I wlan0 8.8.8.8 | awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $10}'`
speedtest-cli > /tmp/wlanTest.txt
downTestWlan=`grep "Download" /tmp/wlanTest.txt | cut -c 11- | cut -d ' ' -f 1`
upTestWlan=`grep "Upload" /tmp/wlanTest.txt | cut -c 9- | cut -d ' ' -f 1`
signalWifi=`grep wlan0 /proc/net/wireless | cut -c 16- | cut -d '.' -f 1`
ifconfig eth0 up

echo "$testDate;$ipLocalWlan;$ipDistantWlan;$latLocalWlan;$latDistWlan;$downTestWlan;$upTestWlan;$signalWifi" >> /home/pi/testDebit/Wifi.csv

Taper maintenant la commande suivante pour rendre le script exécutable :

 chmod +x testNetwork.sh

Voila vous avez à présent un script fonctionnel. vous pouvez le tester si vous voulez mais il reste une dernière étape… L’exécution du script à intervalle régulière avec « crontab ».

Édition de « Crontab »

Maintenant, il ne vous reste plus qu’à éditer « crontab » en tapant la commande suivante :

sudo crontab -e

Et à rentrer la ligne suivante (pour un test toutes les 5 minutes) :

*/5 * * * * bash /home/pi/testNetwork.sh

Penser à enregistrer crontab et redemarrer le service.

Conclusion

Le tuto est terminé. Votre script s’exécute maintenant toutes les 5 minutes et stock les résultats dans deux fichiers « CSV » (un pour l’ethernet et un pour le wifi) que vous pourrez éditer par la suite avec Excel par exemple. Ce script peut être utile si vous voulez « auditer » la qualité d’une ligne ADSL. C’est d’ailleurs pour cette raison que j’ai eu l’idée de le faire 🙂

En vous souhaitant une bonne continuation,
A très bientôt.

Laisser un commentaire