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?
shell-script
ssh
remote
variable-substitution
Jean-Baptiste Martin
fonte
fonte
Respostas:
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 comsubstituição de variável é feita localmente.
Observe que os valores de
LOCATION
eEXEC
são passados para o shell remoto, portanto, isso só funciona se eles não contiverem caracteres especiais do shell.fonte