Comment mesurer la bande passante en ligne de commande?

speed test internet

Vous connaissez sans doute les multiples sites permettant de mesurer la vitesse de votre connexion Internet (Speedtest par exemple), et de frimer devant les copains si vous avez la fibre 🙂
Dernièrement j’ai eu besoin de monitorer la vitesse de ma connexion, c’est Ă  dire prendre une mesure Ă  intervalles rĂ©gulier, et rĂ©cupĂ©rer les donnĂ©es
Je m’attendais au pire et m’imaginais dĂ©jĂ  parser les pages web pour y rĂ©cupĂ©rer les rĂ©sultats, mais pas du tout, il y a beaucoup plus simple

Comment mesurer la bande passante en ligne de commande?
Le site bien connu Speedtest.net propose un outil bien pratique pour lancer vos tests en ligne de commande
Cet outil dispose de nombreuses options vous permettant de choisir le test qui vous intéresse, et le format de sortie le plus facile à utiliser pour vous

Je vais donc vous expliquer comment installer cet outil, les options disponibles, et quelques exemples d’utilisation et d’analyse

Installation de speedtest-cli

L’outil dont je vais vous parler est donc speedtest-cli
Vous trouverez plus d’informations sur la page du projet si besoin

Installation via les dépôts

Sur une Debian ou Ubuntu, je vous conseille d’installer cela directement avec les commandes suivantes:

Installation manuelle

Si vous préférez, vous pouvez aussi télécharger le script python directement:

Quelque soit la mĂ©thode choisie, l’installation est dĂ©sormais terminĂ©e, passons Ă  l’utilisation

Mesure de la vitesse de votre connexion

Pour mesurer la bande passante, la commande basique est celle ci:

Cela vous affichera les 3 informations suivantes :

  • Le ping
  • La vitesse de tĂ©lĂ©chargement (download)
  • La vitesse d’envoi (upload)

Voici un exemple de l’affichage:

Cela est très rapide, et dĂ©jĂ  c’est intĂ©ressant
Si vous ĂŞtes sous Linux, ou avez un Linux sous la main Ă  votre domicile/travail, je trouve dĂ©jĂ  que c’est plus rapide de lancer ça que d’aller sur le site 🙂

Les options disponibles

Mais ce n’est pas tout, de nombreuses options sont disponibles

Usage

Voici le détail de la commande aide:

On peut donc :

  • Afficher le rĂ©sultat en « bytes » plutĂ´t qu’en « bits »
  • Choisir les tests Ă  faire (juste le Download par exemple)
  • Choisir le format de l’affichage (Json et CSV seront très intĂ©ressants pour la suite notamment)
  • GĂ©nĂ©rer une image Ă  partager directement en ligne de commande, par exemple:
    speedtest ovh internet
  • Afficher uniquement les chiffres importants sans le debug (vous aurez donc Ping, Download et Upload uniquement)
  • Afficher la liste des serveurs disponible, et choisir celui qu’on veut utiliser pour le test
  • etc …

Petite prĂ©cision si vous ĂŞtes dans le mĂŞme cas: je n’avais pas accès Ă  toutes ces options avec une installation depuis les dĂ©pĂ´ts sur Debian 8.
J’imagine qu’il faut ĂŞtre sur la dernière version pour avoir tout ça, ou alors utilisez l’installation manuelle pour avoir la version complète avec toutes les options

Exemples

Option simple:

Option JSON sans upload:

Vous avez compris le principe, je vous laisse jouer avec les autres options 🙂

Lire les résultats en PHP

Les différents format disponibles permettent un import facile dans votre logiciel préféré, par exemple on peut utiliser du PHP pour récupérer les valeurs
Dans mon cas j’ai aussi utiliser Cacti pour avoir le graph de l’historique, et Nagios pour avoir une alerte quand ça passe sous un certain seuil
Cela dépendra vraiment de vos besoins

Format JSON

Commençons par la commande prĂ©cĂ©dente avec l’affichage au format JSON
JSON est vraiment un format facile Ă  lire en PHP
En version rapide, voici un code fonctionnel:

Pensez Ă  adapter le chemin du script dans le exec (suivant le type d’installation que vous avez suivi)
Ensuite Ă  vous d’adapter le reste du code pour gĂ©rer l’affichage comme bon vous semble

Vous pouvez ensuite lancer le script, cela produira l’affichage suivant:


Dans le cas du JSON, le nom du champ dans le tableau est le mĂŞme que celui affichĂ© en lançant la commande Ă  la main, donc c’est très simple

Format CSV

Lorsque le format JSON est disponible, le CSV Ă  moins d’intĂ©rĂŞt je trouve
Car il est moins pratique Ă  exploiter
Par contre cela me semble intĂ©ressant si l’on souhaite logguer l’historique dans un fichier, pour l’analyser par la suite

Vous pouvez par exemple l’ouvrir dans Excel et l’analyser comme bon vous semble
Et pour l’exemple je vais vous montrer comment crĂ©er une tâche planifiĂ©e de relevĂ© de la bande passante, puis de le lire en PHP

Création de la tache planifiée

Sur Linux, on va programmer notre tâche planifiée dans crontab en suivant la procédure suivante:

  • Lancer crontab en mode Ă©dition
  • Coller cette ligne par exemple

    Cela va lancer le script speedtest toutes les 5 minutes (Ă  vous d’adapter suivant vos besoins), et enregistrer les rĂ©sultats dans le fichier /root/speedtest.csv
    Pensez aussi Ă  modifier les chemins du script et du fichier si besoin

Au bout de quelques minutes, nous aurons donc un fichier contenant plusieurs lignes, chaque ligne représentant un résultat de speedtest
Nous allons maintenant voir comme le lire en PHP

Lecture du fichier CSV

Encore une fois j’ai crĂ©Ă© rapidement un petit script PHP pour lire le CSV:

Pensez Ă  adapter le chemin du fichier dans le fopen
Ensuite dans un CSV les champs n’ont pas de nom mais des numĂ©ros, la première colonne est le numĂ©ro 0, la suivante le 1, etc …
Il faut donc passer le numéro de votre choix au tableau $data pour afficher ce qui vous intéresse
Evidemment vous pouvez personnaliser l’affichage, ou insĂ©rer les valeurs en base de donnĂ©e pour un traitement ultĂ©rieur

Au lancement du script vous devriez avoir un résultat de ce genre:

 

Conclusion

Et voila pour les bases de l’utilisation de ce script très intĂ©ressant pour Speedtest
Evidemment les possibilitĂ©s sont infinies et je vous ai juste montrĂ© les bases de ce que l’on peut en faire
Je vous laisse jouer avec, et n’hĂ©sitez pas Ă  laisser un commentaire si vous avez trouvĂ© une utilisation intĂ©ressante de ce script, ou si vous bloquez quelque part 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.