Ejecutar comandos con ssh y script de shell utilizando variables en una máquina remota

8

Me gustaría ejecutar un comando y un script ubicados en una máquina remota con un script en una máquina local. Sé que es posible ejecutar este tipo de comandos con ssh, así que hice:

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

Funciona perfectamente Me gustaría que este script sea más genérico, usando variables. Ahora es:

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

Y me sale este error: bash: ./: is a directory

Supongo que la máquina remota no conoce estas variables. Entonces, ¿hay alguna manera de exportarlos al destino?

Jean-Baptiste Martin
fuente

Respuestas:

7

No conozco una manera fácil de exportar variables de entorno a destino, pero su script podría funcionar si lo reemplaza 'con ". Con 's la cadena 'cd ${LOCATION}; ./${EXEC}'se pasa textualmente, pero con

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

La sustitución de variables se realiza localmente.

Tenga en cuenta que los valores de LOCATIONy EXECse pasan al shell remoto, por lo que esto solo funciona si no contienen caracteres especiales de shell.

isido
fuente