• [^] # Re: protections (quoting)

    Posté par . En réponse au message Commande distante avec ssh. Évalué à 4.

    C'est peut-être tordu, mais oui c'est normal.
    Le shell interprète la ligne avant de lancer la commande, donc ta ligne

    ssh utilisateur@machine bash -c "echo 123;echo 456"

    est d'abord interprétée par le shell, qui enlève les guillemets et ssh ne voit que

    ssh utilisateur@machine bash -c echo 123;echo 456

    qu'il envoie au serveur distant, qui lui verra

    bash -c echo 123;echo 456

    qui sera a son tour interprété par le shell distant, qui va séparer ça en deux commandes

    bash -c echo 123
    echo 456

    Pour ce que tu veux faire tu aurais du essayer

    ssh utilisateur@machine bash -c '"echo 123;echo 456"'

    où les simple quote vont protéger les doubles qui seront passés tels quel à ssh qui va les envoyer comme ça au serveur distant, qui exécutera donc la commande

    bash -c "echo 123;echo 456"

    mais comme écrit par d'autres, un simple

    ssh utilisateur@machine "echo 123;echo 456"

    fait l'affaire (les double quote sont encore là pour protéger le point-virgule).