Auteur Sujet: Vous avez une connexion 10 Gb/s ? Aidez-moi à comparer les serveurs SpeedTest !  (Lu 29884 fois)

0 Membres et 1 Invité sur ce sujet

Harvester

  • Abonné Free fibre
  • *
  • Messages: 345
  • Freebox Révolution - Limours (91)
    • Site perso
Hello Vivien, j'ai un merge request en attente depuis ce matin, qui est maintenant en conflit avec les changements introduits cet aprem... Est ce que tu pourras y jeter un œil ? :-)

DamienC

  • Abonné Sosh fibre
  • *
  • Messages: 2 217
  • FTTH ↓ 300Mbps ↑ 300 Mbps sur Brest (29)
Vivien,

Toutes mes excuses, il s'agissait d'un ancien paquet dispo via apt. Je suis sous Debian 9.
J'ai donc utilisé pip install qui me fourni une version plus récente.

Voici mon csv.

PS: Il s'agit d'un serveur en Belgique. Via iperf3 j'obtiens de meilleurs débits au passage...

EDIT: re-upload du fichier, il était tronqué.

willemijns

  • Abonné FreeMobile
  • *
  • Messages: 2 681
Il existe une méthode pour transformer la derniere valeur en GB et non en KB ou MB zesépa... c'est imbuvable ces 6211213,454655464 :-(

essaye de trouver comment reecrire les valeurs d'un fichier CSV sauf la derniere et met la derniere dans une valeur déjà....

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 092
  • Paris (75)
La commande numfmt permet de formater en unités K,M,G, etc.

par exemple:

cat ficher.csv  | numfmt --field=6,7 -d, --to=si  --header=1
va formater les champs 6 et 7 de chaque ligne comme suit: 1000 ->1K, 100000 -> 1M, etc

-d indique le séparateur de champs (, ici)
et --header=1 indique d'ignorer la 1ere ligne

phebert

  • Expert Wibox
  • Expert
  • *
  • Messages: 9
  • Val-De-Reuil 27100
    • Wibox
Bonjour,

Nous avons un serveur speedtest avec liaison 10G en France à Val de Reuil : https://wibox.speedtest.net/fr
Est ce possible de l'ajouter à votre script ?
En retour je pourrais lancer votre script régulièrement pour vous envoyer les résultats

vivien

  • Administrateur
  • *
  • Messages: 47 216
    • Twitter LaFibre.info
SpeedTest-cli permet d'appeler un serveur non pas par son ID (ce serveur n'étant pas public, ce ne sera pas possible) mais par son URL.
Je propsoe donc de rajouter en fin de liste des serveurs SpeedTest privé.
cela nécessite une petite évolution (passer deux paramètres à la fonction selon le type de serveur public / privé), je pense faire ça ce soir.

vivien

  • Administrateur
  • *
  • Messages: 47 216
    • Twitter LaFibre.info
Sur les évolutions du script :
Hello Vivien, j'ai un merge request en attente depuis ce matin, qui est maintenant en conflit avec les changements introduits cet aprem... Est ce que tu pourras y jeter un œil ? :-)
C'est mon premier projet avec GitHub.

Je n'avais pas remarqué le petit "Pull Requests". J'ai tenté une première fois de faire "Approve" sur chaque modification demandée (un grand merci au passage, cela a pour but de rendre le code plus propre, plus lisible et plus respectueux des standards) il me semblait que c'était intégré mais non. Je viens de faire une seconde série de "Approve" sans sucés.

Il faut un peu de temps pour que les approbations soient intégrées ?

La commande numfmt permet de formater en unités K,M,G, etc.

par exemple:

cat ficher.csv  | numfmt --field=6,7 -d, --to=si  --header=1
va formater les champs 6 et 7 de chaque ligne comme suit: 1000 ->1K, 100000 -> 1M, etc

-d indique le séparateur de champs (, ici)
et --header=1 indique d'ignorer la 1ere ligne
Le but du CSV est de pouvoir faire des statistiques avec un tableur (car unitairement un test est pas d'une haute fiabilité), donc il est nécessaire d'avoir systématiquement la même unité pour ne pas rendre la tache du tableur difficile.
La solution pourrait être de convertir en Mb/s systématiquement.
Il est possible de faire des nombres réel (avec des chiffres après la virgule) sans faire appel à calc en batch ? ou la solution la plus simple est de déplacer la virgule de 6 caractères ?


Je te conseille aussi de stocker le résultat du speedtest dans une variable, pour éviter de reparser par tail tout le fichier de log à chaque test de débit.

Outre la compacité du code, tu remplaces 5 créations de processus (4 cut et 1 tail - echo étant un builtin shell) par 1 seul (awk), pour chaque ligne traitée.

Sur un fichier de cette taille la différence est négligeable, mais sur un fichier en centaine de milliers de lignes ça peut devenir énorme, le fork() étant extrêmement couteux.

speedtest ()
{
   resultat=$(speedtest-cli --no-upload --csv --timeout 1 --secure --server $1 2>&1 | cut -d',' -f 1,2,3,4,6,7  2>/dev/null)
   echo "$resultat" >> ${FILE_LOG}
   echo "$resultat" | awk -F "," ' { if ($6~/^[0-9][0-9.]*$/) { if($6<1000000) print ": Échec débit nul - " int($5) " ms" ;  else print ": " int($6/1000000) " Mb/s - " int($5) " ms" }  else print ": Échec du test" } '
}
Je n'avais pas lu ta proposition de code, je pense que c'est une bonne idée, à intégrer avec la division par 1 000 000 du débit.

underground78

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 7 437
  • Orsay (91)
    • FreePON : suivi géographique du déploiement fibre EPON chez Free
Sur les évolutions du script :C'est mon premier projet avec GitHub.

Je n'avais pas remarqué le petit "Pull Requests". J'ai tenté une première fois de faire "Approve" sur chaque modification demandée (un grand merci au passage, cela a pour but de rendre le code plus propre, plus lisible et plus respectueux des standards) il me semblait que c'était intégré mais non. Je viens de faire une seconde série de "Approve" sans sucés.
"Approve" c'est juste indicatif, il faut que tu "merges" la PR dans ton dépôt (en supposant que ça soit possible, i.e si le code n'a pas trop évolué depuis la dernière fois où la PR a été mise à jour).

vivien

  • Administrateur
  • *
  • Messages: 47 216
    • Twitter LaFibre.info
Merci c'est fait.
Version 1.01

phebert

  • Expert Wibox
  • Expert
  • *
  • Messages: 9
  • Val-De-Reuil 27100
    • Wibox
SpeedTest-cli permet d'appeler un serveur non pas par son ID (ce serveur n'étant pas public, ce ne sera pas possible) mais par son URL.
Je propsoe donc de rajouter en fin de liste des serveurs SpeedTest privé.
cela nécessite une petite évolution (passer deux paramètres à la fonction selon le type de serveur public / privé), je pense faire ça ce soir.

Le serveur speedtest.net Wibox est publique - son ID est : 16920
Il est bien disponible dans la liste des serveurs officel sur le site https://www.speedtest.net/fr

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 092
  • Paris (75)

Le but du CSV est de pouvoir faire des statistiques avec un tableur (car unitairement un test est pas d'une haute fiabilité), donc il est nécessaire d'avoir systématiquement la même unité pour ne pas rendre la tache du tableur difficile.
La solution pourrait être de convertir en Mb/s systématiquement.
Il est possible de faire des nombres réel (avec des chiffres après la virgule) sans faire appel à calc en batch ? ou la solution la plus simple est de déplacer la virgule de 6 caractères ?


numfmt --field=6 -d, --to=si --to-unit=1M --header=1
permet de convertir le champ n° 6 en Mega S.I. (10^6).


Thornhill

  • Abonné SFR fibre FttH
  • *
  • Messages: 3 976
  • Saint-Médard-en-Jalles (33)
à intégrer avec la division par 1 000 000 du débit.

Si ton idée est de récupérer directement dans le CSV la valeur de débit en Mb/s :

speedtest-cli --no-upload --csv --timeout 1 --secure --server $1 2>&1 | awk -F "," ' NF>6 { OFS="," ; print $1,$2,$3,$4,$6,$7/1000000} { print $0 } '