Como executar o comando ssh multilinha armazenado em uma variável

Como executar o comando ssh multilinha armazenado em uma variável

Contexto: Estou tentando executar vários comandos em uma máquina remota que não consigo acessar diretamente - primeiro preciso fazer ssh em uma máquina gateway, depois fazer ssh a partir daí e executar os comandos.

Basicamente, o que procuro é uma maneira de empacotar um conjunto de comandos que eu possa passar por qualquer número de níveis de ssh. Isso pode ser feito? Suspeito que a melhor resposta será usar o scp para copiar um script e depois executá-lo, o que é uma opção.

Observe que usei o comando hostname como uma forma de mostrar o que está acontecendo - não é isso que eu realmente quero fazer!

Começando com um comando que executa um único ssh e executa um conjunto de comandos de várias linhas:

ssh gateway.my.company "
  hostname;
  hostname;
"

Isso funciona bem. A saída é algo como:

target_machine
target_machine

Em seguida, armazenei o conjunto de comandos em uma variável e passei isso em:

command="
  hostname;
  hostname;
"
ssh gateway.my.company $command

A saída é exatamente a mesma - ambos hostnameos comandos são executados no destino.

Em seguida, adiciono o salto ssh extra (para a máquina privada):

ssh gateway.my.company ssh target_machine_ip $command

Desta vez os dois hostnamecomandos são executados em máquinas diferentes:

target_machine
gateway_machine

Parece que posso resolver esta etapa agrupando o cmd entre aspas de escape (ou seja \"$command\"), mas se fizer isso, terei que envolvê-lo de forma diferente para o caso direto, pois ssh gateway.my.company \"$command\"não funciona mais

NOTA: Compreendo que os comandos não devem ser armazenados em uma variável, mas em uma função, mas como estou usando o ssh, qualquer função que eu declarei não existiria depois que eu fizesse o ssh no próximo servidor.

EDIT: A pergunta original omitiu o segundo salto, desculpe!

Responder1

você está faltando apenas algumas citações:

ssh gateway.my.company "$command"

informação relacionada