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 16/01/2011, à 19:38

baba00000000

[Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Bonjour à tous.

J'ai écris un petit bash, qui revois la réponse dans fichier ( une ligne).
Dans ce même bash je voudrais me reservir de cette réponse. Je cherche pas forcement la meilleur méthode, mais une qui marche.

J'ai écris

VAR3=`while read ligne ;do echo $ligne ;done < /home/sebastien/lftp/résultat.txt`

Je voudrais mettre le résultat dans un post automatique.

Voilà ce qui ce passe, la première fois le script ce lance mais ne poste rien.
La deuxième fois le script réalise le poste mais en ce resservent du résultat précédant.

J'avoue ne pas tous comprendre, je pense que ma VAR3 à un tour de décalage.

Merci a ce qui pourront m'éclaircir sur le point de la VAR3, je pensais que ce que j'ai écris allais lire le fichier après qu'il soit crée précédemment et me l'inclure dans par la suite dans mon post automatique.

Dernière modification par baba00000000 (Le 17/01/2011, à 14:10)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#2 Le 16/01/2011, à 20:48

chopinhauer

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Le fichier est ouvert au moment où la commande apparait dans le script. Donc si l'écriture du fichier est postérieure, il sera vide.

Aussi ce n'est pas la manière plus simple d'ajouter le contenu d'un fichier dans une variable. On peut aussi faire :

VAR3=`cat /home/sebastien/lftp/résultat.txt`

ou si on veut seul la première ligne :

VAR3=`head -1 /home/sebastien/lftp/résultat.txt`

Regarde l'indice du manuel de coreutils pour une liste de commande universellement présentes et utiles.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 16/01/2011, à 23:58

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Merci pour tes reponses toujours rapide.
Y a toujours un truc qui cloche. Car mon bash marche mais la 2 fois pas la première.
Donc c'est plus la VAR3. Je continue à fouiner.

Edit: J'aurais du mettre la partie du code mais je pensais que la VAR3 était le problème.

VAR1=`basename $VAR`
VAR3=`head -1 /home/sebastien/lftp/url.txt`


curl -s -d "username=LOGIN&password=MDP&sid=4600d0ed538efa2b58020c757c49252e&redirect=index.php&login=Connexion&redirect=.%2Fucp.php%3Fmode%3Dlogin" -L "http://URL/ucp.php?mode=login" --cookie-jar cookie.txt

curl -s -L "http://URL" --cookie cookie.txt>fichier.html


VAR2=`xsltproc --html form.xsl fichier.html`


curl -s -d "subject='$VAR1'&message='$VAR3'&'$VAR2'attach_sig=on&hide_robot=on&post=Envoyer" -L "http://URL/posting.php?mode=post&f=372" --cookie cookie.txt
done

Mais, tu m'avais aidé pour cette partie. Mais une chose me perturbe.

curl -s -d "username=LOGIN&password=MDP&sid=4600d0ed538efa2b58020c757c49252e&redirect=index.php&login=Connexion&redirect=.%2Fucp.php%3Fmode%3Dlogin" -L "http://URL/ucp.php?mode=login" --cookie-jar cookie.txt

curl -s -L "http://URL" --cookie cookie.txt>fichier.html


VAR2=`xsltproc --html form.xsl fichier.html`


curl -s -d "subject='$VAR1'&message='$VAR3'&'$VAR2'attach_sig=on&hide_robot=on&post=Envoyer" -L "http://URL/posting.php?mode=post&f=372" --cookie cookie.txt
done

Avec ce code dans un fichier, j'obtien mon message ( je viens juste de refaire un teste et est bien vérifier qu'il n'y avais pas de fichier.html). Alors pourquoi quand je le mets dans mon script. Sa ne marche plus et que je me retrouve dans le cas de mon premier post de la VAR3?

J'ai aussi essayer :

curl -s -L "http://URL/posting.php?mode=post&f=372" --cookie cookie.txt | xsltproc --html form.xsl

que tu m'avais proposé.

Merci beaucoup.

Dernière modification par baba00000000 (Le 17/01/2011, à 02:43)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#4 Le 17/01/2011, à 02:48

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

J'ai mis une pause et sa à l'air de fonctionner. Je vais faire des test dans les jours à venir. Et si tous marche bien j'éditerais mon poste en Résolu.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#5 Le 17/01/2011, à 03:11

chopinhauer

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

baba00000000 a écrit :
curl -s -d "subject='$VAR1'&message='$VAR3'&'$VAR2'attach_sig=on&hide_robot=on&post=Envoyer" -L "http://URL/posting.php?mode=post&f=372" --cookie cookie.txt
done

Si je me rappelle bien VAR2 est déjà bien encodé (au fait ne contient pas de caractères étranges), par contre il faut faire attention avec les autres variables surtout celles qui peuvent présenter espaces, &, =, etc… Du coup il faudrait modifier la ligne vers :

curl -s --data-urlencode "subject=$VAR1" --data-urlencode "message=$VAR3" -d "${VAR2}attach_sig=on&hide_robot=on&post=Envoyer" -L "http://URL/posting.php?mode=post&f=372" --cookie cookie.txt

Tu peux toujours voir le résultat des substitutions avec un set -ex au début du script. En fait je déconseille d'enlever ses options tant que le script n'est pas bien fonctionnel (le fanion -e arrête en cas d'erreur, -x affiche les commandes exécutées).


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#6 Le 17/01/2011, à 08:59

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Encore un grand merci.
Avec bash  -ex nomduprogramme.sh j'obtien ça:

++ xsltproc --html form.xsl fichier.html
warning: failed to load external entity "form.xsl"
cannot parse form.xsl
+ VAR2=

la commande de VAR2=`xsltproc --html /home/sebastien/form.xsl fichier.html`
le fichier est crée juste avant, peut être le même problème que pour la VAR3?

( je connaissais l'option -x mais pas l'option -e qui est vraiment très pratique)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#7 Le 17/01/2011, à 11:10

Totor

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Bonjour,

Pour lire la 1ère ligne d'un fichier :

read < fichier
echo "La première ligne du fichier est : ${REPLY}"

Dernière modification par Totor (Le 17/01/2011, à 11:10)


-- Lucid Lynx --

Hors ligne

#8 Le 17/01/2011, à 12:30

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Je suis pas sûre que sa soit la bonne méthode mais elle marche.
Merci à vous deux et trop heureux d'apprendre des choses.
Voici comment j'ai fais pour la VAR2=`read < /home/sebastien/fichier.html | xsltproc --html /home/sebastien/form.xsl /home/sebastien/fichier.html`

Sa à marcher je continue un peu les test.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#9 Le 17/01/2011, à 13:39

chopinhauer

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

baba00000000 a écrit :

la commande de VAR2=`xsltproc --html /home/sebastien/form.xsl fichier.html`
le fichier est crée juste avant, peut être le même problème que pour la VAR3?

La variable est vide même après avoir corrigé le chemin de form.xsl ? Juste avant de devrait pas poser des problèmes, sauf si tu lances certaines commandes en background, mais cela ne semble pas le cas.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#10 Le 17/01/2011, à 14:09

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Ta raison il fallait juste les chemin pour form.xsl et fichier.html pour que sa fonctionne.
On cherche vraiment des complications quand on ne connait pas.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#11 Le 17/01/2011, à 14:51

Totor

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Ceci n'a pas de sens :

baba00000000 a écrit :

VAR2=`read < /home/sebastien/fichier.html | xsltproc --html /home/sebastien/form.xsl /home/sebastien/fichier.html`

Pour ton script, je ne comprends pas tout, notamment l'utilité de ta variable VAR2 que j'ai remplacé par un fichier, mais ceci devrait fonctionner :

cookie="${HOME}/cookie.txt"
resultat="${HOME}/resultat.html"
form="${HOME}/form.xsl"
[ -f "${cookie}" ] && rm "${cookie}"
[ -f "${resultat}" ] && rm "${resultat}"

VAR1="${basename "${VAR}")"
read < "${HOME}/lftp/url.txt"
VAR3="${REPLY}"
# il est également possible de procéder ainsi pour initialiser VAR3 (mais les éventuels espaces en début et fin de ligne seront perdues) :
# read VAR3 < "${HOME}/lftp/url.txt"


curl -s -d "username=LOGIN&password=MDP&sid=4600d0ed538efa2b58020c757c49252e&redirect=index.php&login=Connexion&redirect=.%2Fucp.php%3Fmode%3Dlogin" -L "http://URL/ucp.php?mode=login" --cookie-jar "${cookie}"

curl -s -L "http://URL" --cookie "${cookie}"|xsltproc -o "${resultat}" --html "${form}" - 

curl -s -d "subject='$VAR1'&message='$VAR3'&'$VAR2'attach_sig=on&hide_robot=on&post=Envoyer" -L "http://URL/posting.php?mode=post&f=372" --cookie "${cookie}"

-- Lucid Lynx --

Hors ligne

#12 Le 17/01/2011, à 16:48

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Pour comprendre la VAR2 faut que tu jettes un coup d'œil là : http://forum.ubuntu-fr.org/viewtopic.ph … 3#p3905053
elle est très importante pour le post automatique sur un forum phpbb3. Tu as 3 valeurs input de type hide à récupérer dont 2 qui on là même valeur.
Sans ces valeurs placer dans le requête curl rien ne sera poster.

Donc la bonne solution pour la VAR2 et `xsltproc --html /home/sebastien/form.xsl /home/sebastien/fichier.html`
en oubliant pas les chemins pour form.xsl et fichier.html
Et là tous ce passe bien pour VAR2 ( exemple de valeur: name="lastclick" value="1292605678 et name="form_token" value="660275c1db05ee26276cd660c9ac0f293f72331b").


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#13 Le 17/01/2011, à 17:28

Totor

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

arg, je ne l'avais pas vu dans le curl suivant hmm
Aussi, si tu regardes bien mon code, tu n'as pas besoin d'utiliser /home/sebastien/fichier.html car xsltproc sait exploiter l'entrée standard

Dernière modification par Totor (Le 17/01/2011, à 17:29)


-- Lucid Lynx --

Hors ligne

#14 Le 21/01/2011, à 18:45

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Ce soir je me pense sur l'entrée standard, sa marchera mieux que les fichiers.
Désoler j'avais pas trop le temps.

Edit:

 VAR2=`curl -s -L "http://URL/posting.php?mode=post&f=372" --cookie cookie.txt | xsltproc --html form.xsl` 

Marche pas.

J'ai essayer -o
Marche pas non plus.
Je le lis le man à cette adresse: http://jp.barralis.com/linux-man/man1/xsltproc.1.php

Dernière modification par baba00000000 (Le 21/01/2011, à 20:20)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#15 Le 22/01/2011, à 12:53

baba00000000

Re : [Résolu] Lire une ligne dans un fichier et l'entrer dans variable.

Voilà ce que j'ai fais, je reconnais que c'est pas terrible mais sa marche.
La VAR2 est toujours remplie.

xsltproc --output /home/sebastien/lftp/test.txt --html /home/sebastien/form.xsl /home/sebastien/fichier.html


VAR2=`head -1 /home/sebastien/lftp/test.txt`

L'entré standard, j'ai toujours pas compris comment m'en servir. Je vais continuer mes recherches.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne