Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/06/2020, à 09:30

BenjiBoy

[RESOLU] Interrompte un WGET après X bytes de téléchargement

Salut tous,

j'ai fais un petit script de récupération de données, qui se veut partiellement automatique.
C'est depuis un serveur chez nous, sur un appareil de mesure dans la nature, sur le réseau.
Succinctement :

- Le script contrôle sur le serveur s'il existe des fichiers, de quand, et il les complète en créant des fichiers journaliers à partir d'une trame ininterrompue de l'appareil de mesure : ça, ça marche bien.
- Par contre le script prévoit aussi de "trouver" la date de l'enregistrement zéro et de partir de là pour refaire tous les fichiers journaliers jusqu'à aujourd'hui (dans le cas ou l'appareil aurait perdu toute ses données ou bien qu'on ait changé quelque chose sur place pendant une maintenance).

C'est juste pour expliquer un peu, mais ce qu'il faut retenir c'est plutôt ça :
Tout se fait par wget sur un API URL de l'appareil.
Pour trouver la date zéro, l'API ne prévoit malheureusement pas de télécharger uniquement la première ligne d'enregistrement, la seule chose possible est un wget depuis l'enregistrement zéro, mais avec TOUT le reste aussi. Ca m'oblige à télécharger l'intégralité des données sur un seul fichier, ce qui est volumineux au regard du débit de nos connexions sur ces appareils (dans la nature, souvenez-vous).

J'en arrive à la question : est-il possible d'interrompre une commande wget après, par exemple, le premier Mo téléchargé, car le fichier aura alors la date zéro et mon script pourra l'utiliser.
Je ne peux pas mettre un critère de temps, encore une fois la qualité de connexion fait que le téléchargement peut mettre quelques secondes/minutes à se lancer, c'est trop variable.

Avez-vous des idées ?
a+

Dernière modification par BenjiBoy (Le 09/06/2020, à 11:31)

Hors ligne

#2 Le 09/06/2020, à 10:20

kamaris

Re : [RESOLU] Interrompte un WGET après X bytes de téléchargement

Si wget est nécessaire, il y aurait :

wget -O- "$url" | dd bs=1 count=1024 >fichier

Inspiré de https://stackoverflow.com/questions/578 … inux-comma (où d'autres solutions avec curl sont proposées).

Dernière modification par kamaris (Le 09/06/2020, à 10:21)

Hors ligne

#3 Le 09/06/2020, à 10:54

BenjiBoy

Re : [RESOLU] Interrompte un WGET après X bytes de téléchargement

Salut,

oui le wget est le seul moyen de DL les données sur ces appareils (hors logiciel propriétaire, bien sûr, qui est windows).

Alors

wget -O- "$url" | dd bs=1 count=1024 >fichier

n'a pas fonctionné. Mais c'est peut-être parce que le fichier que je récupère est en sortie du wget avec l'option "-O", et du coup ce n'est pas "fichier" qui se rempli. Lui ne voit que la waitbar du wget.

Un exemple de ma commande wget (avec les variables) :

wget --connect-timeout=60 --read-timeout=60 -O ${NOM_STA}_${JDAY}_${YEST}_${TABLE}.dat "${IP_STA}/?command=DataQuery&uri=dl:${TABLE}&format=toa5&mode=date-range&p1=${YEST}T00:00:00&p2=${YEST}T23:59:59"

Et je mets la sortie sur 2>/dev/null parce que sur le serveur on a des centaines de stations et ça fait des fichiers messages monstrueux à purger.

Hors ligne

#4 Le 09/06/2020, à 10:59

kamaris

Re : [RESOLU] Interrompte un WGET après X bytes de téléchargement

Oui, il faut transférer le nom de fichier à droite du pipe dans ce cas :

wget --connect-timeout=60 --read-timeout=60 -O- "${IP_STA}/?command=DataQuery&uri=dl:${TABLE}&format=toa5&mode=date-range&p1=${YEST}T00:00:00&p2=${YEST}T23:59:59" | dd bs=1 count=1024 >${NOM_STA}_${JDAY}_${YEST}_${TABLE}.dat

EDIT : et si tu veux supprimer les sorties informatives de wget et de dd, tu peux respectivement utiliser les options -q et status=none :

wget -q --connect-timeout=60 --read-timeout=60 -O- "${IP_STA}/?command=DataQuery&uri=dl:${TABLE}&format=toa5&mode=date-range&p1=${YEST}T00:00:00&p2=${YEST}T23:59:59" | dd status=none bs=1 count=1024 >${NOM_STA}_${JDAY}_${YEST}_${TABLE}.dat

Dernière modification par kamaris (Le 09/06/2020, à 11:06)

Hors ligne

#5 Le 09/06/2020, à 11:22

BenjiBoy

Re : [RESOLU] Interrompte un WGET après X bytes de téléchargement

Ah oui beaucoup mieux !
Super, je peux implémenter cela dans mon code. Ca va faciliter le transfert que je dois me taper sur toutes les stations .... Merci beaucoup.

C'est quoi l'option "-O-" dans le wget ?

Hors ligne

#6 Le 09/06/2020, à 11:29

kamaris

Re : [RESOLU] Interrompte un WGET après X bytes de téléchargement

Ça lui dit simplement d'écrire (-O) sur la sortie standard (-).
On peut l'écrire avec espace : -O -, ou sans : -O-.

Hors ligne

#7 Le 09/06/2020, à 11:31

BenjiBoy

Re : [RESOLU] Interrompte un WGET après X bytes de téléchargement

Ok, merci bien !

Hors ligne