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 13/10/2014, à 17:35

vandal77500

recuperer une ligne(variable) d'une page web en sh

Bonjour,

je souhaiterais recuperer ligne d'une page web en .sh sous debian.
Est-ce possible ?  je veux coder en sh ,par exemple je rentre donc l'adresse du site web , exemple : google et sur cette page je voudrais recuperer la variable "recherche" et je voudrais réutiliser cette variable dans une boucle if.


Merci d'avance

Hors ligne

#2 Le 13/10/2014, à 18:52

Yooxel

Re : recuperer une ligne(variable) d'une page web en sh

Salut,

Alors, le meilleur outil pour récupérer une page web c'est curl. Ensuite, pour récupérer la ligne d'intérêt c'est grep, puis pour récupérer la variable d'intérêt c'est awk.

Ce qui nous donne, pour une page genre :

<html>
<body>
<p>On s'en fout de ça.</p>
<p class='zloup'>blah blah blah : VARIABLE À RÉCUPÉRER</p>
<p class='zloup'>blah blah blah : UNE AUTRE VARIABLE MAIS ON S'EN FOUT</p>
<footer>
html5 ftw
</footer></body></html>
sudo apt-get update && sudo apt-get install curl (il est possiblement déjà installé mais bon au cas où)

Puis le script bash :

#!/bin/sh
thevariable=$(curl -s http://www.le-site.fr | grep 'zloup' | head -n 1 | awk '{print $5}')
if [ $thevariable == 'youpi' ]; then
do etc…

J'ai mis $5 dans awk, mais j'ai pas compté, à toi d'ajuster de toute façon.

Tout cela est dans le plus pur style UNIX où tu pipes (redirige à travers un |) un flux de données dans plein de petits softs qui font chacun un truc, mais le font bien.

Le head -n 1 sert à n'afficher que la première ligne.

Si tu as des problèmes :

man bash
man awk
man grep
man curl
man head

Y

Dernière modification par Yooxel (Le 13/10/2014, à 18:53)


Y

Hors ligne

#3 Le 14/10/2014, à 09:58

vandal77500

Re : recuperer une ligne(variable) d'une page web en sh

Salut merci de ton aide,

Enfaite mon site internet m'affiche uniquement cette ligne <{"scen_name":"admin_966\n"}> et je souhaiterais juste recuperer le 966 , or cette variable change à chaque fois qu'on va sur la page. Donc je voudrais recuperer le nombre qui suit admin_ .Et réutiliser ce nombre dans le meme programme sh pour aller le retrouver dans une table sql  en faisant un " select * from * where 'admin_"mon_nombre" ' .

Je sais pas si c'est possible dans un meme code sh.
Dans le code que tu m'as fais je ne comprend pas le grep 'zloup' et aussi la boucle if car ma variable change tous le temps donc je ne peux pas faire if [ $mavariable == '966' ] vu que ma variable change .

je ne sais pas si j'ai été claire et je débute en info.. , desolé si je pose des questions un peu bête.

Merci d'avance

Hors ligne

#4 Le 14/10/2014, à 10:15

vandal77500

Re : recuperer une ligne(variable) d'une page web en sh

@yooxel ,
J'ai compris le 'zloup' c'est le nom de la classe de la page html. Dans mon cas, ma page html à un code source tous simple , c'est seulement :

{"scen_name":"admin_969\n"}

merci

Hors ligne

#5 Le 14/10/2014, à 10:50

credenhill

Re : recuperer une ligne(variable) d'une page web en sh

hello
pour récupérer le nombre après admin_

$ echo '<{"scen_name":"admin_966\n"}> ' | grep -oP '(?<=admin_)[0-9]*'
966

Hors ligne

#6 Le 14/10/2014, à 11:17

vandal77500

Re : recuperer une ligne(variable) d'une page web en sh

salut credenhill

merci de ta rep smile
j'ai fais un :
echo var=$(curl -s 'http://mon_adresse' | grep -oP (?<=admin_)[0-9]+'
pour verifier et le terminale me renvois bien la valeur. Donc maintenant je peut utiliser var pour et l'utiliser pour faire ma requete sql ?

je pourrais avoir la signification de "?<="  stp

merci

Hors ligne

#7 Le 14/10/2014, à 11:35

credenhill

Re : recuperer une ligne(variable) d'une page web en sh

oui
(?<=admin_)[0-9]*' on cherche un nombre précédé de admin_ MAIS on n'affiche pas admin_ dans le résultat c'est le (?<= )

Hors ligne

#8 Le 14/10/2014, à 11:52

nesthib

Re : recuperer une ligne(variable) d'une page web en sh

@Yooxel : curl n'est pas nécessairement « le meilleur outil », certes il sort par défaut la page sur la sortie standard, mais tu peux faire de même avec wget, donc tout est à relativiser (inutile d'installer curl si le serveur a déjà wget par exemple, tu peux même utiliser directement GET), ensuite grep est inutile si tu utilises awk par la suite : awk sait très bien afficher les lignes selon un motif, comme grep. De même, tel que le montre credenhill, grep a des possibilités de travailler avec des expressions rationnelles. Voilà, juste une petite remarque pour rappeler que les outils curl/grep/awk ne servent pas seulement à (afficher une page web/sélectionner une ligne selon un mot/afficher une colonne)

@vandal77500 : peux-tu donner un extrait du code source de la page web en question ?


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#9 Le 14/10/2014, à 13:52

vandal77500

Re : recuperer une ligne(variable) d'une page web en sh

view-source:http://10.xxx.173.137/d_json_get_table.php?function=launch_script&scen_id=035&service_to=BIV&number_to=6004

{"scen_name":"admin_969\n"}

voila

Dernière modification par vandal77500 (Le 15/10/2014, à 10:00)

Hors ligne

#10 Le 15/10/2014, à 00:33

Yooxel

Re : recuperer une ligne(variable) d'une page web en sh

@nesthib : tout à fait, merci pour ces précisions smile
Il est vrai que j'ai eu la main un peu lourde, mais on va dire que c'était pour montrer les pipes... :siffle:
@vandal77500 (change de pseudo sérieux...) : y'a deux nombres premiers dans l'adresse IP, cool, non ? tongue

Dernière modification par Yooxel (Le 15/10/2014, à 00:34)


Y

Hors ligne

#11 Le 15/10/2014, à 15:12

vandal77500

Re : recuperer une ligne(variable) d'une page web en sh

@yooxel yes facile à retenir smile

j'aurais encore besoin d'aide . J'ai un problème de variable.

voici mon code shell :

#!/bin/sh

var=$(curl -s 'http://10.xxx.xxx.xxx/d_json_get_table.php?blabla' | grep -oP '(?<=admin_)[0-9]+')

var1=mysql -uroot -ppass -e "USE easyflow;" -e "select scenario from machin where scenario_status='admin_$var';" | grep -oP '(PASSED)'


mon "var" permet d'aller recuper un nombre sur une page web
mon "var1" me permet de me connecter a une base mysql et de chercher le status pour "admin_var" . Normalement quand j'execute mon fichier shell je dois voir sur mon terminal un "PASSED" or la je n'ai rien.

Cependant quand je fais un echo  $var : j'ai bien un un nombre qui s'affiche mais quand je réutilise cette variable rien se passe.
Aussi dans mon var1 quand je remplace $var par un nombre qui existe dans ma base sa fonctionne , j'ai un "PASSED" en retour. je trouve ça vraiment bizarre
Avez vous une idée?

Merci d'avance

Dernière modification par vandal77500 (Le 15/10/2014, à 15:42)

Hors ligne

#12 Le 15/10/2014, à 15:39

nesthib

Re : recuperer une ligne(variable) d'une page web en sh

Il n'y a pas de var2. Fais attention à ce que tu écris, c'est peut être une typo ?
Sinon ce morceau de code n'a aucun sens :

var1=mysql -uroot -ppass -e "USE easyflow;" -e "select scenario from machin where scenario_status='admin_$var';" | grep -oP '(PASSED)'

Ici tu lances la commande « -uroot » avec comme environnement « var=mysql ».

NB. utilise les balises code (bt_pre.png) quand tu postes du code.
NB2. inutile de cacher ton adresse IP, une adresse en 10.x.y.z est privée. Ceux qui lisent ce fil n'ont pas accès à ton réseau local wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#13 Le 15/10/2014, à 15:54

vandal77500

Re : recuperer une ligne(variable) d'une page web en sh

@nesthib merci de ta rep
yes j'ai corrigé var2 fautes de frappes.
NB2 : ok
ma ligne s'execute sans le var1=  et aussi avec smile, enfaite j'ai mis var1= parce que je dois recuperer le resultat dans une variable pour l'utiliser apres.

Sinon j'ai reussi a regler mon probleme , ma variable n'avais pas le temps de s'enregistrer dans ma base de données.
Du coup j'ai mis un sleep pendant 1 min et sa fonctionne maintenant.
Bonne journée A+

Merci

Dernière modification par vandal77500 (Le 15/10/2014, à 16:13)

Hors ligne

#14 Le 15/10/2014, à 22:35

nesthib

Re : recuperer une ligne(variable) d'une page web en sh

À mon avis tu n'as pas recopié ce que ton script contient vraiment, car la syntaxe n'a pas de sens là. wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne