[bash] Probleme commande

Résolu
L0gIn Messages postés 8 Statut Membre -  
L0gIn Messages postés 8 Statut Membre -
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...^^
Configuration: Linux Kubuntu,
Firefox 3.5.5
...

9 réponses

  1. L0gIn Messages postés 8 Statut Membre
     
    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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  3. L0gIn Messages postés 8 Statut Membre
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  6. L0gIn Messages postés 8 Statut Membre
     
    ...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
  7. L0gIn Messages postés 8 Statut Membre
     
    @dubcek

    idem avec cette commande :
    ~$ ssh $NomUser@$Host 'echo -n "Entrer un nom d\'utilisateur : " ; read Nom ; echo "$Nom" '
    >
    
    0
    1. qqchquicommenceparQ
       
      ssh $NomUser@$Host 'echo -n "Entrer un nom d'\''utilisateur : " ; read Nom ; echo "$Nom" '
      
      0
  8. L0gIn Messages postés 8 Statut Membre
     
    :) 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
  9. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
    1. L0gIn Messages postés 8 Statut Membre
       
      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
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > L0gIn Messages postés 8 Statut Membre
         
        ...puis-je y ajouter des arguments comme cela :

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


        Oui ;-))
        0
      2. L0gIn Messages postés 8 Statut Membre > 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