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).
[^] # Re: protections (quoting)
Posté par wismerhill . En réponse au message Commande distante avec ssh. Évalué à 4.
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).