Envoyer "entree" a un script appelle depuis un autre script...

Envoyer "entree" a un script appelle depuis un autre script... - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 19-05-2004 à 06:18:54    

Salut tous !
 
Je suis actuellement en train de faire un script (appellons le script1) et dans ce script j'en appelle un autre, appellons le script2.  
 
Il se trouve que script2 requiert que l'utilisateur tape sur entree a la fin de son execution.  
 
Or mon script1 doit etre sans intervention de l'utilisateur, et je ne peux pas modifier le script2.  
 
Aussi, je cherche comment faire de facon simple pour envoyer a script2 depuis script1 la frappe clavier "enter". Je fais un script sous shell et sous debian Sarge.
 
Merci d'avance !
ZedroS


Message édité par zedros le 19-05-2004 à 07:34:46
Reply

Marsh Posté le 19-05-2004 à 06:18:54   

Reply

Marsh Posté le 19-05-2004 à 07:37:14    

En fait j ai quelques precisions a apporter : ce serait cool que l'utilisateur puisse voir l'affichage de script2 (en cas de plantage).
 
Autre chose : j ai une piste pour l instant avec expect mais bon je me galere bien avec ce petit language a lui tout seul ! Toute autre idee (ou ebauche de solution) est toujours la bienvenue !
 
++
ZedroS

Reply

Marsh Posté le 19-05-2004 à 08:35:04    

tu as essayé une bidouille horrible du style
 
echo '\n' | script1  
 
:D ?
c'est moche mais j'ai deja vu ca une fois :lol:

Reply

Marsh Posté le 19-05-2004 à 08:46:11    

Trop fort !
 
Ca marche !!!!!  
 
Merci philou_a7 :)  
 
Fini de me galerer avec Expect :) :)

Reply

Marsh Posté le 19-05-2004 à 08:59:53    

Ceci dit pour le script suivant que j ai a traiter ainsi ca a po l air de marcher top (il a besoin de "entree" puis d'un simple 'q').
 
Je regarde plus en profondeur !

Reply

Marsh Posté le 19-05-2004 à 09:35:55    

Bon, je me fais mon thread a moi tout seul mais bon, histoire de koi ;)
 
Finalement je fais ca :
 
Dans mon "script1" je mets :
script2 < ligne
 
ligne etant un autre fichier contenant :  
"
q"
 
J aimerai bien reussir a tout passer directement dans une seule ligne genre : script2 < "\nq" mais pour le moment sans succes...  
 
M'enfin, le mieux est l ennemi du bien !

Reply

Marsh Posté le 19-05-2004 à 09:42:37    

j'aurais cru que \nq fonctionnerait... pas grave :p
 
echo "\n" > temp
echo "q" >> temp
scrtip < temp :p

Reply

Marsh Posté le 19-05-2004 à 09:43:52    

c'est grrruuuuiiiiikkk
:hello:

Reply

Marsh Posté le 19-05-2004 à 11:20:15    

tant que ca marche... :p
 
Le probleme est qu'il doit utiliser en non-interactif un script créé pour de l'interactif, et qu'il ne peux pas modifier celui-ci... donc y a forcement que du gruik :D

Reply

Marsh Posté le 20-05-2004 à 01:53:24    

Encore merci !
 
En effet, philou_a7, ton dernier truc marche en effet :) Tu peux juste me redetailler le fonctionnement du >> ? Il me semble que c'est un truc qui decale la chaine cible mais je ne suis plus 100% au point (et trouver de la doc sur google pour un ">>" pas facile facile... page blanche).
 
Quand a MacG, en effet c'est gruuuuuiiiiiiiik mais si tu as plus propre (tout en restant simple si possible) je suis preneur ;) Alors ? lol

Reply

Marsh Posté le 20-05-2004 à 01:53:24   

Reply

Marsh Posté le 20-05-2004 à 02:10:55    

En fait apres verification seul le fichier passe en entree (< ) du second script fonctionne correctement.  
 
Avec les echo > temp et >> temp ca ne tourne pas : ca "sort" bien du script mais le "q" passe n'est en fait pas pris en compte. M'enfin c'est pas grave, je vais generer le fichier a passer depuis mon script puis le supprimer de suite :)

Reply

Marsh Posté le 20-05-2004 à 08:44:00    

ZedroS a écrit :

Encore merci !
 
En effet, philou_a7, ton dernier truc marche en effet :) Tu peux juste me redetailler le fonctionnement du >> ? Il me semble que c'est un truc qui decale la chaine cible mais je ne suis plus 100% au point (et trouver de la doc sur google pour un ">>" pas facile facile... page blanche).
 
Quand a MacG, en effet c'est gruuuuuiiiiiiiik mais si tu as plus propre (tout en restant simple si possible) je suis preneur ;) Alors ? lol


 
en C/C++ (et autres langages) les operateurs >> et << sont des decalages de bits
en shell, ce sont des operateurs de redirection comme > et < :
 
commande > fichier crée le fichier avec la sortie de commande en l'ecrasant si existant
commande >> fichier ajoute la sortie de commande a la fin de fichier :)

Reply

Marsh Posté le 20-05-2004 à 08:44:19    

sinon, c'est dans la page de manuel de bash ;)

Reply

Marsh Posté le 27-05-2004 à 08:31:20    

Merci a toi pour ces infos !

Reply

Marsh Posté le 27-05-2004 à 09:12:23    

philou_a7 a écrit :

tu as essayé une bidouille horrible du style
 
echo '\n' | script1  
 
:D ?
c'est moche mais j'ai deja vu ca une fois :lol:

le fait est que echo '\n' ne fait rien du tout
 
par défaut, echo fait un retour à la ligne et n'interprète pas les caractère d'échappement -> \n est affiché
 
la solution serait alors echo -ne '\n' pour interprété le caractère et ne pas faire de retour à la ligne automatique

Reply

Marsh Posté le 27-05-2004 à 09:47:41    

philou_a7 a écrit :

j'aurais cru que \nq fonctionnerait... pas grave :p
 
echo "\n" > temp
echo "q" >> temp
scrtip < temp :p


on peut aussi faire :
script << EOF
\n
q
EOF
 
:)

Reply

Marsh Posté le 27-05-2004 à 10:02:00    

Euh... Je me suis sans doute mal exprime, mais les solutions de philou_a7 marchent tres bien et je m'en suis arrete la.  
 
Ceci dit, c'est toujours instructif, c'etait juste pour vous dire de pas forcement vous casser la tete sur un probleme deja resolu de facon "satisfaisante" (au moins a mon gout :$)..  
 
Encore merci !
 
ps : mon autre post par contre n'est pas encore solutionne ^^... Enfin, j'dis ca, mais j'dis rien ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed