Ausführen von Befehlen mit ssh- und Shell-Skript mithilfe von Variablen auf einem Remotecomputer

8

Ich möchte einen Befehl und ein Skript auf einem Remotecomputer mit einem Skript auf einem lokalen Computer ausführen. Ich weiß, dass es möglich ist, diese Art von Befehlen mit auszuführen ssh, also habe ich gemacht:

#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'

Es funktioniert perfekt. Ich möchte, dass dieses Skript allgemeiner ist und Variablen verwendet. Jetzt ist es:

#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'

Und ich bekomme diesen Fehler: bash: ./: is a directory

Ich denke, die Remote-Maschine kennt diese Variablen nicht. Gibt es also eine Möglichkeit, sie zum Ziel zu exportieren ?

Jean-Baptiste Martin
quelle

Antworten:

7

Ich weiß nicht , eine einfache Möglichkeit , Umgebungsvariablen zu Ziel exportieren, aber Ihr Skript könnte funktionieren , wenn Sie ersetzen 'mit ". Mit 's wird der String 'cd ${LOCATION}; ./${EXEC}'wörtlich übergeben, aber mit

ssh username@target "cd ${LOCATION}; ./${EXEC}"

Die Variablensubstitution erfolgt lokal.

Beachten Sie, dass die Werte von LOCATIONund EXECan die Remote-Shell übergeben werden. Dies funktioniert also nur, wenn sie keine Shell-Sonderzeichen enthalten.

Isido
quelle