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


8

Eu 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 eu 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 exportá- los para o destino?


Respostas:


7

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

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

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

Observe que os valores de LOCATIONe EXECsão passados ​​para o shell remoto, portanto, isso só funciona se eles não contiverem caracteres especiais do shell.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.