7
votes

Comment faire la vitesse de téléchargement de grep de wget Sortie?

Je dois télécharger plusieurs fichiers avec wget et mesurer la vitesse de téléchargement.

E.g. Je télécharge avec xxx

et la sortie est xxx

J'ai besoin de grep la vitesse de téléchargement totale, c'est-à-dire chaîne 490 kb / s . Comment puis-je faire cela?

P.s. Peut avoir besoin de rendre compte de l'affaire que nous téléchargerons un seul fichier, donc il n'y aura pas de sortie finale à partir de fini


1 commentaires

wget 'https://x.com' -O / dev / null 2> & 1 | grep -op '(? <= \ \ \ () \ d + \.? \ d + \ sb / s (? = \ \ \))' Explication, Enregistrer sur NULL, REROUTE ERR TO OUT OUT, UTILISEZ SORTIE, utilisez hardcore REGEX, LOOKEDEDIDE POSITIVE, LOOKEAD POSITIVE


6 Réponses :


4
votes

mise à jour, une version de style grep à l'aide de SED: xxx pré>

Version ancienne: p>

Je pensais, il est plus facile de diviser la taille du fichier par le temps de téléchargement après la période de téléchargement. Télécharger. ; -) P>

(/usr/bin/time -p wget ... 2>&1 >/dev/null; ls -l newfile) | \
awk '
   NR==1 {t=$2};
   NR==4 {printf("rate=%f bytes/second\n", $5/t)}
'


2 commentaires

Pas plus facile, il me semble. Je dois déterminer la taille du fichier et le temps de téléchargement, diviser et si le temps est égal à zéro? Veuillez fournir l'exemple comment le faire par ex. avec bash


Le temps rapporté, zéro nécessite une attention particulière. Il semble que Grepping est peut-être plus facile. D'une manière ou d'une autre, j'ai eu la production dynamique et progressive de Wget à l'esprit que je pensais dur pour le grep.



2
votes

Cela a fonctionné pour moi, en utilisant votre wget -o / dev / null

la regex que j'ai utilisé était \ ([0-9.] \ + [km ] B / s \)

mais note que je devais rediriger starr sur stdout de sorte que la commande était la suivante: < Pré> xxx

Ceci permet des choses comme 923 kb / s et 1,4 mb / s


grep vient de trouver des correspondances. Pour obtenir la ou les valeurs, vous pouvez utiliser sed à la place: xxx


5 commentaires

Pour moi, il retourne toute la ligne qui contient la vitesse. Mais comment puis-je obtenir seulement ce qui est à l'intérieur des supports? par exemple. 923 kb / s ou 1,4 mb / s ?


Maintenant, l'exemple avec sed fonctionne - il extrait la vitesse ( 923 kb / s ), mais avant qu'il imprime toutes les autres sorties.


@Nick: Combinez-les. Unix Shell est tout au sujet de la pipeline - wget abc | grep ghi | sed xyz


@Nickolaileschov Vous pouvez transmettre l'option - correspondant à ( -o ) à grep pour obtenir la ficelle juste à l'intérieur des supports.


... je suis sûr qu'il y a des raisons de la folie. Pourquoi stardr. tant pis.



-1
votes

Pourquoi ne pouvez-vous pas simplement faire cela:

perl -ne "/^Downloaded.*?\((.*?)\)/; print $1"


2 commentaires

La ligne avec "téléchargé" pourrait ne pas être là, si un seul fichier a été récupéré.


Comment utiliser cette chose avec wget?



-3
votes

Voici la suggestion. Vous pouvez utiliser WGET'S'S ''s's's's's's's's's's's's's's's's's's's's's's> - Taux limite = montant de la quantité . Par exemple,

- Taux de limite = 400K limitera le taux de récupération à 400 Ko / s. Puis c'est plus facile pour vous de calculer la vitesse totale. Vous économise du temps et de l'angoisse mentale en essayant de la déguster.


0 commentaires

2
votes

cela fonctionne lorsque seulement 1 fichier est en cours de téléchargement.

J'ai commencé à utiliser SED pour obtenir la vitesse de wget, mais je l'ai trouvée, alors je l'irriant pour que je puissi je suis restitué à grep.

Ceci est ma commande: xxx

l'option -O -o signifie qu'il ne renvoie que cette pièce. Il correspond à 1 ou plus des 10 chiffres alors un espace. Puis éventuellement k ou m avant le b / s

qui retournera 423 kb / s (par exemple).

au grep pour juste les unités, utilisez grep -o "[km] * b / s" et pour juste le numéro utilise grep -o "[0123456789] \ + .


2 commentaires

Je supprimerais la star de la deuxième classe de caractères, vous n'avez besoin que d'un k ou de M. Notez également qu'il y a plusieurs occurrences de vitesses dans la sortie, qui ne sont pas tous intéressants pour l'OP; Une solution complète doit prendre en compte le contexte, ce qu'Afaik ne peut pas être effectué par un seul appel grep .


Cela n'a donné que 1 sortie pour moi ...: / Il a eu plusieurs fois, mais il a dit qu'il n'aurait pas 2 fichiers ...? Je n'utilisais que 1 fichier.



0
votes

Par exemple, obtenez la vitesse dans Mbit par seconde (en ajoutant --Report-vitesse = bits pour wget et modèle de petit changement GREP):

1,51 Mb/s


1 commentaires

Cela peut ne pas couvrir la vitesse dans les GBP. Veuillez augmenter la couverture.