Forum Linux.embarqué exécuter un script bash local sur une machine distante via le ssh

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
11
nov.
2021

Hello à toutes et à tous.

Depuis quelques jours, j'essaie via le ssh d'exécuter sur une machine distante,
un script bash que j'ai en local.

Si je me connecte en SSH sur la machine distante,
et que j'exécute la commande directement, ça fonctionne.

Cependant, lorsque j'essaie à partir de mon script local j'ai cette erreur :

execl(); errno 2
Couldn't save environment -1#

Voici la commande que j'aimerais exécuter :

/opt/lantiq/bin/sfp_i2c -i11 -s XXXXXXXXXX

Voici les scripts :

  • Celui que j'exécute en local pour établir la connexion en ssh :
    #/bin/bash

    pass=$1
    sudo sshpass -p 'XXXXXXXXXX' ssh -y ONTUSER@192.168.1.10 'ash -s' < /tmp/test1.sh $pass
  • Celui que j'aimerais exécuter à distance :
    #!/bin/ash

    pass=$1
    echo $pass
    /opt/lantiq/bin/sfp_i2c -i11 -s $PASS

J'ai essayé en remplaçant #!/bin/ash par #!/usr/bin/env ash, mais le résultat est le même.

Si quelqu'un a une idée :)

Merci par avance

Doudoo

  • # mise en page foireuse

    Posté par  (site web personnel, Mastodon) . Évalué à 4.

    C'est un peu illisible ; je ne sais pas si tu étais satisfait/satisfaite de la prévisualisation avant de poster.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: mise en page foireuse

      Posté par  . Évalué à 3. Dernière modification le 11 novembre 2021 à 19:25.

      j'ai corrigé pour lui
      faut dire que le bouton "code" ne precise pas de mettre le langage associé et pete souvent la mise en forme.

      • [^] # Re: mise en page foireuse

        Posté par  . Évalué à 1.

        Hello.
        Je te remercie :)

      • [^] # Re: mise en page foireuse

        Posté par  (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 11 novembre 2021 à 20:38.

        Merci :-) C'est plus clair ainsi et on peut enfin apporter des réponses/pistes (je viens de voir que j'ai été devancé par NeoX)

        “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # probleme de qui gere quoi ?

    Posté par  . Évalué à 4. Dernière modification le 11 novembre 2021 à 19:35.

    il te faut passer le contenu de ton script à 'ash -s', pas à ssh

    il te faut donc jouer des simples quote, double quote

    sinon, dans ce cas present pourquoi faire un script pour lancer 1 seule commande
    qui pourrait etre remplacer par

    sudo sshpass -p 'XXXXXXXXXX' ssh -y ONTUSER@192.168.1.10 '/opt/lantiq/bin/sfp_i2c -i11 -s' $pass

    autre possibilité,
    transférer le script, puis l'executer à distance

    #dans le script local
    
    #pousser le script à faire executer à distance
    sudo sshpass -p 'XXXXXXXXXX' scp lescript_a_distance ONTUSER@192.168.1.10:
    
    # executer ce script
    sudo sshpass -p 'XXXXXXXXXX' ssh -y ONTUSER@192.168.1.10 lescript_a_distance $pass
    • [^] # Re: probleme de qui gere quoi ?

      Posté par  . Évalué à 1.

      Hello.
      Je te remercie pour ta réponse.
      Je testerai ce soir.
      Merci encore :)

    • [^] # Re: probleme de qui gere quoi ?

      Posté par  . Évalué à 3.

      Pour compléter, un mélange de transfert de script et d'exécution :

      echo "/opt/lantiq/bin/sfp_i2c -i11 -s ${pass}" | ssh ordi_distant "ash -"

      Pour passer un script plus long, c'est peut être utile d'ajouter base64 et base64 -d de part et d'autre du ssh.

  • # Touvé :)

    Posté par  . Évalué à 1.

    Hello,
    Tout d'abord, je vous remercie pour votre aide et vos réponses.
    En utilisant vos méthodes, je me retrouvais avec les mêmes messages d'erreurs :(

    Mais j'ai trouvé ceci , si ça peut aider :

    sudo sshpass -p 'XXXXXX' ssh -y ONTUSER@192.168.1.10 "ash --login -c '/opt/lantiq/bin/sfp_i2c -i11 -s \"$slid\"; reboot; exit'"

  • # Sans charger le script

    Posté par  . Évalué à 2.

    Salut,
    La commande ssh login@machine te permet de lancer un interpréteur de commande distant. Est-ce qu’un simple :
    ssh login@machine <mon_script ne fonctionnerait pas ? J’ai juste un doute sur certaines structure if, for par exemple.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.