Aller au contenu

[RESOLU] petite question de shell scripting

Featured Replies

Posté(e)

Bonjour,

je suis nul en shell (je sais, c'est un tort).

Mais je reconnais que c'est parfois très utile, même indispensable.

Ici, j'ai besoin de parser l'output de wget pour récupérer un code aléatoire que génère mon serveur

voici le truc:

mb@pt-mb:~$ wget mon.serveur.be:8079

--14:27:41-- http://mon.serveur.be:8079/

=> `index.html.1'

Résolution de mon.serveur.be... 193.191.6.173

Connexion vers mon.serveur.be|193.191.6.173|:8079... connecté.

requête HTTP transmise, en attente de la réponse... 301 Realityserver Status

Emplacement: /.SwJq6bjwzKgVJ/kantdreieck/ [suivant]

--14:27:41-- http://mon.serveur.be:8079/.SwJq6bjwzKgVJ/kantdreieck/

=> `index.html.1'

Connexion vers mon.serveur.be|193.191.6.173|:8079... connecté.

requête HTTP transmise, en attente de la réponse... 200 OK

Longueur: non spécifié [text/html]

[ <=> ] 17 197 --.--K/s

14:27:42 (1.12 MB/s) - « index.html.1 » sauvegardé [17197]

mb@pt-mb:~$

j'aurais besoin d'un script capable de récupérer le code " .SwJq6bjwzKgVJ " (code qui sera différent à chaque lancement du serveur) dans l'output de wget (et tant qu'on y est, ne pas sauvegarder le fichier index.html qui est récupéré par cette commande).

des idées? j'imagine que sed pourra être utile, mais je n'en connais vraiment pas plus...

merci à tous

:francais:

EDIT: Résolu

Modifié par mikemowgli

Posté(e)

wget mon.serveur.be:8079|grep Emplacement|cut -f2 -d/

=> "grep" pour isoler la ligne qui contient la ligne ou il y a "Emplacement"...

=> "cut" avec le séparateur "/" pour isoler les champs, dont ont va prendre le deuxième, dans la ligne isolée par grep...

Par contre, tu vas perdre la confirmation visuelle que le téléchargement s'est bien passé... mais j'imagine que c'est ce que tu veux?

Modifié par tuXXX
Pas de quote inutile

Posté(e)

Essaye avec curl -v .

Tu recevra un code de déplacement, 301, et surtout le header "Location :" qui dit quelle est l'adresse de la page cible.

Posté(e)
  • Auteur

Vous êtes des amours!!

Nickel super, ça m'a vraiment aidé.

Merci à Aefron pour "cut" que je ne connaissais pas et merci à TuXX pour "curl" que je ne connaissais pas non plus (et qui me permet de récupérer ce code sans télécharger de fichier.

je mets ma solution:

curl -v mon.serveur.be:8079 2>&1 | grep "location" | cut -f2 -d/

en fait, à la fois "wget" et "curl" balancent l'output sur stderr et pas sdtout. Donc, Aefron, le pipe que tu proposes ne marche pas vu que le pipe ne prend en input que ce qui vient de stdout et pas stderr.

Ce qui explique la raison de l'astuce "2>&1" (trouvée sur DLFP... vous avais-je dis que j'étais nul en shell scripting? :dd:)

à bientôt mes enfants

Et merci beaucoup!

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.