Executando comandos com o script ssh e shell usando variáveis em uma máquina remota

9

Gostaria de executar um comando e script localizado em uma máquina remota com um script em uma máquina local. Eu sei que é possível executar esse tipo de comando com ssh , então eu fiz:

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

Funciona perfeitamente. Eu gostaria que esse script fosse mais genérico, usando variáveis. Agora é:

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

E recebo este erro: bash: ./: is a directory

Eu acho que a máquina remota não conhece essas variáveis. Então, existe uma maneira de exportar eles para o alvo?

    
por Jean-Baptiste Martin 02.07.2014 / 14:04

1 resposta

7

Não conheço uma maneira fácil de exportar variáveis ambientais para o destino, mas seu script pode funcionar se você substituir ' por " . Com ' s, a string 'cd ${LOCATION}; ./${EXEC}' é passada textualmente, mas com

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

substituição de variável é feita localmente.

Observe que os valores de LOCATION e EXEC são passados para o shell remoto, portanto, isso só funcionará se eles não contiverem nenhum caractere especial de shell.

    
por 02.07.2014 / 14:13