[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 -
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 :
Et sur ce fameux ScriptAexecuter.sh quelque chose du style :
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 :
voila donc...^^
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:
- [bash] Probleme commande
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Diskpart commande - Guide
- Commande scannow - Guide
9 réponses
Salut,
Voir du côté de la commande "expect" :
https://forums.commentcamarche.net/forum/affich-2340762-ssh-ecrire-un-script-pour-connexion-ssh
https://forums.commentcamarche.net/forum/affich-2535655-script-sur-machine-distante-avec-ssh
https://forums.commentcamarche.net/forum/affich-3892296-syntaxe-de-la-commande-su-password-en-batch#2
Voir du côté de la commande "expect" :
https://forums.commentcamarche.net/forum/affich-2340762-ssh-ecrire-un-script-pour-connexion-ssh
https://forums.commentcamarche.net/forum/affich-2535655-script-sur-machine-distante-avec-ssh
https://forums.commentcamarche.net/forum/affich-3892296-syntaxe-de-la-commande-su-password-en-batch#2
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 :) .
Cependant si quelqu'un voit une méthode simple pour ce faire avec expect je suis preneur :) .
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" '
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" '
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 :
En laisant les simple quotes je me retrouvais avec :
...donc pour répondre a la question, non la effectivement read ne se lance même pas ^^
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 ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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" '
essaye
ssh $NomUser@$Host 'echo -n "Entrer un nom d\'utilisateur : " ; read Nom ; echo "$Nom" '
...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
./script.sh
Maintenant lorsque j'exécute le premier script voila ce que ça donne :
...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 >.<'
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 >.<'
@dubcek
idem avec cette commande :
idem avec cette commande :
~$ ssh $NomUser@$Host 'echo -n "Entrer un nom d\'utilisateur : " ; read Nom ; echo "$Nom" ' >
:) 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 ?
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 ?
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
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
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 ...
...puis-je y ajouter des arguments comme cela :
...?
Ou dois-je obligatoirement m'aider d'un script expect ?
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 ?