#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
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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
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 ?
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
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 () 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
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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 , 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à.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne