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.