[bash] Probleme commande

Résolu/Fermé
L0gIn Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009 - 15 déc. 2009 à 22:03
L0gIn Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009 - 16 déc. 2009 à 18:44
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 mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 11:33
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 déc. 2009 à 12:01
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 mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 16:10
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 déc. 2009 à 16:41
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 mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 16:47
...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 mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 16:52
@dubcek

idem avec cette commande :
~$ ssh $NomUser@$Host 'echo -n "Entrer un nom d\'utilisateur : " ; read Nom ; echo "$Nom" '
>
0
qqchquicommenceparQ
16 déc. 2009 à 16:58
ssh $NomUser@$Host 'echo -n "Entrer un nom d'\''utilisateur : " ; read Nom ; echo "$Nom" '
0
L0gIn Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 17:06
:) 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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 déc. 2009 à 17:18
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 mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 18:01
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > L0gIn Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009
16 déc. 2009 à 18:22
...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 mardi 15 décembre 2009 Statut Membre Dernière intervention 16 décembre 2009 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
16 déc. 2009 à 18:44
:D impeck !! je viens de tester et tout marche à merveille !!

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