2015-09-11 1 views
0

je tente d'envoyer une commande via ssh qui ressemble à ceci:

ssh [email protected] "echo $(uname -a)" 

Mais mon problème est que $(uname -a) partie réellement créer un sous-shell et exécute pas sur le serveur 192.168.1.1, mais sur mon système, à partir duquel j'ai exécuté cette commande.

Comment puis-je résoudre ce problème?

P.S. Mon exemple réel impliqué docker arrêter toute commande, qui ressemble à

docker stop $(docker ps -q) 

mais je simplifié question. Désolé, je simplifie trop ma question. Désolé, je simplifie trop ma question. Ma commande use ici du document (car commande à l'intérieur est complexe et peut nécessiter beaucoup de citations différentes marques)

ssh [email protected] <<SSHCOMMAND 
    echo $(uname -a) 
SSHCOMMAND 

Alors solution Ignacio Vazquez-Abrams ne fonctionnera pas

Répondre

1

Je trouve solution -

ssh [email protected] <<'SSHCOMMAND' 
    echo $(uname -a) 
SSHCOMMAND 

assez étrange pour moi, mais fonctionne, merci Ignacio Vazquez-Abrams pour le nom correct de ce processus 'substitution', je ne pouvais pas trouver avant :)

2

guillemets simples répriment toute substitution.

ssh [email protected] 'echo $(uname -a)' 
+0

Merci, votre solution fonctionne bien, mais j'ai ajouté un exemple plus complexe, qui est plus proche de ma commande actuelle. – ShockwaveNN