[bash] Probleme commande

Résolu
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai un problème d'exécution de la commande "read" en lançant un script via ssh.

Je m'explique, je cherche à exécuter un script situé sur une machine A depuis cette même machine, sur une machine B.

Pour le moment j'utilise ceci :

ssh $NomUser@$Host < ScriptAexecuter.sh


Et sur ce fameux ScriptAexecuter.sh quelque chose du style :

#! /bin/bash

echo -n "Entrer un nom d'utilisateur : "
read Nom
echo "$Nom"

exit


Lors de l'exécution de ce script sur la machine distante, arrivé à la commande "read" le terminal n'attend pas la saisi du clavier pour passer aux autres lignes du script, ce qui fait tout planter.
Je voudrais donc savoir par quel moyen je peux résoudre ce problème (de préférence sans avoir au final a devoir copier mon script sur la machine distante afin de pouvoir l'exécuter).

Sinon un autre problème au passage si quelqu'un voit comment faire... j'aimerais trouver un moyen pour que la première commande qui exécute mon script via ssh me permette de faire passer des arguments à ce même script. Quelque chose dans le genre :
ssh $NomUser@$Host < ScriptAexecuter.sh Jdupond


voila donc...^^
A voir également:

9 réponses

L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour les liens, mais un script expect ce voit m'être utile si je n'ai que quelques commandes à exécuter en ssh, hors il se trouve que j'aimerais exécuter un script qui fais à peu prêt 600 ligne sur une machine distante, et je doute que pour le coup un script expect soit la meilleur solution...

Cependant si quelqu'un voit une méthode simple pour ce faire avec expect je suis preneur :) .
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
hello
est-ce que le read s'arrête en exécutant :
ssh $NomUser@$Host 'echo -n "Entrer un nom d'utilisateur : " ; read Nom ; echo "$Nom" '
0
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
salut,
Ta commande a un soucis de quotes et ne peut donc pas s'exécuter correctement, cependant pour pouvoir l'exécuter j'ai enlever les simples quotes que tu a mis et il me retourne l'erreur suivante :

bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file


En laisant les simple quotes je me retrouvais avec :

~$ ssh $NomUser@$Host 'echo -n "Entrer un nom d'utilisateur : " ; read Nom ; echo "$Nom" '
>


...donc pour répondre a la question, non la effectivement read ne se lance même pas ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
je n'avais pas vu cette quote : nom d'utilisateur
essaye
ssh $NomUser@$Host 'echo -n "Entrer un nom d\'utilisateur : " ; read Nom ; echo "$Nom" '
0
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
...Bon pour mieux exposer mon problème, voici un exemple de ce que je cherche a faire :

Les scripts sont situé sur la machine A, dont le 2eme script est à exécute sur la machine B.

./ssh.sh
#! /bin/bash

ssh  XXX@XXX.XXX.fr' < script.sh
exit 


./script.sh
#! /bin/bash

echo "entrer un nombre : "
read nbr
echo "$nbr"

exit 



Maintenant lorsque j'exécute le premier script voila ce que ça donne :

l0gin@l0gin-laptop:~$ ./ssh.sh
XXX@XXX.XXX.fr's password:
entrer un nombre :
l0gin@l0gin-laptop:~$


...et le script en s'exécutant passe directement aux commande suivante sans attendre la saisie clavier.
voila donc le cœur de mon problème >.<'
0
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
@dubcek

idem avec cette commande :
~$ ssh $NomUser@$Host 'echo -n "Entrer un nom d\'utilisateur : " ; read Nom ; echo "$Nom" '
>
0
qqchquicommenceparQ
 
ssh $NomUser@$Host 'echo -n "Entrer un nom d'\''utilisateur : " ; read Nom ; echo "$Nom" '
0
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
:) c'est bon la commande marche cette fois, et il attend bien la saisie clavier.

Cependant s'il s'agit de plus de 600 ligne de commande a faire passer , je pense qu'il risque d'y avoir un problème en faisant cette méthode... non ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
c'est la redirecion qui pose problème
une solution, copier le script sur le système distant et l'exécuter depuis là
scp ScriptAexecuter.sh $NomUser@$Host:/tmp/ScriptAexecuter.sh
ssh $NomUser@$Host /tmp/ScriptAexecuter.sh
0
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Ah okay je vois,
donc au final je n'ai vraiment que cette solution pour exécuter correctement mon script ?

Et bien merci de ton aide, je pense que je vais donc faire cette méthode alors ^^.

Par-contre si je fais ...
ssh $NomUser@$Host /tmp/ScriptAexecuter.sh


...puis-je y ajouter des arguments comme cela :
ssh $NomUser@$Host /tmp/ScriptAexecuter.sh Jdupond


...?

Ou dois-je obligatoirement m'aider d'un script expect ?
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
...puis-je y ajouter des arguments comme cela :

ssh $NomUser@$Host /tmp/ScriptAexecuter.sh Jdupond


Oui ;-))
0
L0gIn Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
:D impeck !! je viens de tester et tout marche à merveille !!

Merci à tous pour vos réponses !! :)
0