web-dev-qa-db-fra.com

Comment ajuster le résultat de speedtest-cli pour ne générer que la vitesse de téléchargement?

Je voudrais afficher périodiquement mon résultat de vitesse de téléchargement de test de vitesse dans indicateur-sysmoniteur .

speedtest-cli a une sortie quelque peu réduite si vous exécutez

$ speedtest-cli --simple
Ping: 50.808 ms
Download: 10.87 Mbit/s
Upload: 4.47 Mbit/s 

Existe-t-il un moyen de réduire davantage la sortie, jusqu'au chiffre numérique de la vitesse de téléchargement?

8
Adam

Comme speedtest-cli est un programme et une bibliothèque python, il est assez facile de créer un programme alternatif minimal qui effectue uniquement un test de téléchargement et imprime la sortie.

Ouvrez un éditeur, enregistrez-le sous dl-speedtest.py

import speedtest

s = speedtest.Speedtest()
s.get_config()
s.get_best_server()
speed_bps = s.download()
speed_mbps = round(speed_bps / 1000 / 1000, 1)
print(speed_mbps)

exécuter avec python dl-speedtest.py

Cela donne le résultat en bps, en nombre à virgule flottante Mbps arrondi à une décimale comme demandé

La version minimale de speedtest-cli pour que cela fonctionne est 1.0.0. Je pense que vous devrez peut-être utiliser pip install speedtest-cli --upgrade pour effectuer la mise à niveau.

11
Pelle

C'est un travail pour awkname__:

speedtest-cli --simple | awk 'NR==2{print$2}'      # just the numeral
speedtest-cli --simple | awk 'NR==2{print$2" "$3}' # numeral and unit

Des explications

  • NR==2 - prenez la ligne 2
  • {print$2} - affiche la deuxième colonne (séparée par des espaces)
  • {print$2" "$3} - affiche la deuxième colonne suivie d'un espace et de la troisième

Avec sedc'est un peu plus compliqué:

speedtest-cli --simple | sed '/D/!d;s/.* \(.*\) .*/\1/' # just the numeral
speedtest-cli --simple | sed '/D/!d;s/[^ ]* \(.*\)/\1/' # numeral and unit

Des explications

  • /D/!d - recherche les lignes contenant Det ne pas (!) dname__elete les supprimer, mais toutes les autres lignes
  • s/A/B/ - sname__ubstitute Aavec Bname__
  • .* - prend tout
  • [^ ]* - prend tout ce qui n'est pas (^) un espace
  • (space space) - un espace littéral
  • \(…\) - prend tout à l'intérieur et enregistre le en tant que groupe
  • \1 - récupère le contenu du groupe 1
10
dessert

Et puis il y a:

speedtest-cli --simple | grep Download | awk '{print $2}'

Comme la première option de dessert sans le sélecteur de ligne.

2
Stephen Boston

Vous pouvez essayer ceci:

speedtest-cli --simple | grep "Download: " | sed "s/Download: //g"
1
AmeyaVS

Cela fonctionnera également:

speedtest-cli --simple | grep -E "Download:\s*" | sed -r 's/Download:\s*//'
1
George Udosen