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 22/05/2016, à 12:57

sny75

interraction avec un script shell

Bonjour,
Je dois faire appel à un script PHP via un script shell (pour ne pas répéter l'opération manuellement plusieurs fois).
J'ai donc ce script sh :

for i in "1 2 3"; do
  php /apps/user/www/public/index.php script \$i
done

Le problème c'est que pour chaque "$i", je dois entrer une confirmation pour que le script PHP réalise l'opération.
J'ai tenté avec expect mais couplé au shell ca n'a pas l'air de marché.

En gros lorsque le script PHP s’exécute, j'ai un message de confirmation et c'est à ce moment là qu'il faut envoyer "yes".

Merci de votre aide:)

Dernière modification par sny75 (Le 22/05/2016, à 13:00)

Hors ligne

#2 Le 22/05/2016, à 13:28

Shanx

Re : interraction avec un script shell

Salut,

à tester :

echo yes | php /apps/user/www/public/index.php script \$i

Ou alors :

php /apps/user/www/public/index.php script \$i << EOF
yes
EOF

Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied

Hors ligne

#3 Le 22/05/2016, à 13:36

sny75

Re : interraction avec un script shell

Merci mais ca ne fonctionne pas.
J'ai toujours un message qui demande la confirmation.

Hors ligne

#4 Le 22/05/2016, à 14:32

claudius01

Re : interraction avec un script shell

Bonjour,

Une proposition peut-être idiote: Comme il semble que tu sois en local, ne peux-tu pas modifier le script php ?;-)

Hors ligne

#5 Le 22/05/2016, à 14:33

sny75

Re : interraction avec un script shell

Non ce n'est pas mon application WEB.

Hors ligne

#6 Le 22/05/2016, à 14:58

claudius01

Re : interraction avec un script shell

Ok, est-il possible alors de connaître comment est implémenté ce "yes" de confirmation dans le ou les scripts php ?

Hors ligne

#7 Le 22/05/2016, à 15:05

sny75

Re : interraction avec un script shell

Le problème c'est que je ne trouve pas le bout de code : php /apps/user/www/public/index.php script
Je ne sais pas où chercher.

Hors ligne

#8 Le 22/05/2016, à 15:09

Shanx

Re : interraction avec un script shell

Je dirais qu'il est probablement dans /apps/user/www/public/index.php  tongue

Pour le voir :

cat /apps/user/www/public/index.php

Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied

Hors ligne

#9 Le 22/05/2016, à 15:11

sny75

Re : interraction avec un script shell

Voilà le message lorsque j’exécute le script :
capture

Dernière modification par sny75 (Le 22/05/2016, à 15:15)

Hors ligne

#10 Le 22/05/2016, à 15:15

sny75

Re : interraction avec un script shell

Shanx a écrit :

Je dirais qu'il est probablement dans /apps/user/www/public/index.php  tongue

Pour le voir :

cat /apps/user/www/public/index.php

Je ne vois pas grand chose dans cette page, je précise que Zend est utilisé.

Hors ligne

#11 Le 22/05/2016, à 15:37

claudius01

Re : interraction avec un script shell

Peut-être qu'en recherchant dans le projet des termes comme "Please confirm that you..." et/ou "CONFIRM_DELETE", tu localiseras l'endroit où agir ... Je commence à comprendre pourquoi la commande "yes" de bash est inopérante ;-)

Hors ligne

#12 Le 22/05/2016, à 15:45

sny75

Re : interraction avec un script shell

Mais non j'ai mis YES sur le forum, j'ai fait le remplacement dans mon script ne t'inquiètes pas:)
Peux-tu m'aider sur la commande stp ?

Hors ligne

#13 Le 22/05/2016, à 15:46

Shanx

Re : interraction avec un script shell

sny75, tu avais bien remplacé mon "yes" par "CONFIRM_DELETE", n'est-ce pas ?


Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied

Hors ligne

#14 Le 22/05/2016, à 15:47

sny75

Re : interraction avec un script shell

oui!

Hors ligne

#15 Le 22/05/2016, à 15:50

sny75

Re : interraction avec un script shell

Il est impossible d'envoyer automatiquement "CONFIRM_DELETE" donc ?

Hors ligne

#16 Le 22/05/2016, à 16:52

claudius01

Re : interraction avec un script shell

sny75 a écrit :

Le problème c'est que je ne trouve pas le bout de code : php /apps/user/www/public/index.php script
Je ne sais pas où chercher.

Shanx a écrit :

sny75, tu avais bien remplacé mon "yes" par "CONFIRM_DELETE", n'est-ce pas ?

sny75 a écrit :

oui!

Mais non j'ai mis YES sur le forum, j'ai fait le remplacement dans mon script ne t'inquiètes pas smile

Il est impossible d'envoyer automatiquement "CONFIRM_DELETE" donc ?

Désolé, mais j'ai du mal à suivre ce dialogue qui déroute mon esprit cartésien ;-)

Hors ligne

#17 Le 22/05/2016, à 17:13

sny75

Re : interraction avec un script shell

Je recommence :
Je dois faire appel à un script PHP depuis un script bash (afin d'automatiser la commande pour plusieurs ID)

for i in "1 2 3"; do
  php /apps/user/www/public/index.php script \$i
done

La commande se lance mais demande une confirmation (CONFIRM_DELETE) :
http://www.hostingpics.net/viewer.php?i … apture.png

Je veux donc envoyer "CONFIRM_DELETE" pour chaque exécution du script PHP

Hors ligne

#18 Le 22/05/2016, à 17:18

Watael

Re : interraction avec un script shell

sny75 a écrit :

J'ai tenté avec expect mais couplé au shell ca n'a pas l'air de marché.

ok, donc, « ça marche pas » mad, mais qu'est-ce qui ne marche pas ? qu'as-tu essayé ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#19 Le 22/05/2016, à 17:26

sny75

Re : interraction avec un script shell

J'ai tenté

php /apps/user/www/public/index.php script \$i
send "CONFIRM_DELETE"

J'ai bien sur fait les déclarations en début de fichiers (expect et bash).

Hors ligne

#20 Le 22/05/2016, à 17:54

Watael

Re : interraction avec un script shell

J'ai bien sur fait les déclarations en début de fichiers (expect et bash).

oula !
qu'appelles-tu "déclarations" ?
expect et bash sont deux programmes différents, tu ne peux évidemment pas "mixer" les commandes de ces deux prorgammes pour faire un script.

de manière approximative (tu devras faire des recherches pour que ça fonctionne), le script expect devrait ressembler à ça :

#!/usr/bin/expect

spawn '/chemin/tonScript argument'
expect 'message envoyé par le programme'
send 'message attendu par le programme'

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#21 Le 22/05/2016, à 18:02

sny75

Re : interraction avec un script shell

J'ai plusieurs messages d'erreur (spawn not found, send not found ...).

Je fait l'appel de la manière suivante à mon script sh:
sudo -u user sh test.sh

La commande PHP je la met après "spawn".

Hors ligne

#22 Le 22/05/2016, à 18:38

sny75

Re : interraction avec un script shell

Tout se lance maintenant.

#!/usr/bin/expect
spawn php /apps/user/www/public/index.php script 420
expect "command."
send "CONFIRM_DELETE"

Parcontre la confirmation n'est pas prise en compte!

Hors ligne

#23 Le 22/05/2016, à 19:01

Watael

Re : interraction avec un script shell

expect 'message EXACT envoyé par le programme'

or, le programme n'affiche, selon l'image postée, pas "command.", mais

une_date une_heure: un_message...

donc, il faut, puisque la date et l'heure varient, appeler la commande expect avec l'option -re pour pouvoir utiliser une regex qui éludera la problématique de variation de date/heure.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#24 Le 22/05/2016, à 19:11

sny75

Re : interraction avec un script shell

C'est pas censé fonctionné ? :

expect "*?command."

La fin se termine toujours par command.

Dernière modification par sny75 (Le 22/05/2016, à 19:23)

Hors ligne

#25 Le 22/05/2016, à 19:32

claudius01

Re : interraction avec un script shell

Avant de synchroniser avec "expect", tu peux mettre un "set  timeout  30" (durée à définir @ aux dates/heures de la trace).
Cela permettra de lever le doute entre ce qui est attendu et ce qui doit être émis...
Cf. 2. Timeout On Expect String

Hors ligne