Como automatizar esta tarefa?
1) Você está em A. 2) Você ssh em B. 3) Você executa um script em B, que precisa de um parâmetro conhecido em A.
Primeiro, pensei que talvez pudesse enviar o valor quando abri a conexão com o ssh. Então, provavelmente mais simples, entre 1) e 2), scp o script inteiro no mesmo local em B (substituindo o antigo). Mas, ainda assim, como executo o script em B? (Ou seja, como automatizar essa última etapa. Claro, eu poderia executá-la manualmente após o ssh.)
Outro pensamento, talvez descartar o ssh por completo - eu tenho uma página da Web em B, então o script poderia ser invocado de alguma forma através de uma interface da web "sob o capô"?
Ou você faria isso de uma maneira completamente diferente?
Respostas:
Isso será executado
myscript foobar
no servidor.fonte
~/.elm/aliases
.)"
) em oposição a aspas simples ('
) é importante aqui. Usar double significa que o shell na sua máquina local expandirá a variável e, em seguida, execute ossh
comando. Se um único fosse usado, o shell local não tocaria no comando, que é enviado literalmente, mas ainda será expandido no shell remoto.$myparameter
contiver espaços, ele será dividido no lado do servidor. O Bash'sprintf
tem um%q
formato que você pode usar. Eu tenho algum código de exemplo, mas não se encaixa aqui. Vou criar uma nova resposta para isso.(Este é um seguimento do meu comentário sobre a resposta aceita .)
Observe que, se
$myparameter
contiver espaços, ele será dividido no lado do servidor. O printf do Bash tem um%q
formato que você pode usar. Exemplo:fonte
Se é seguro assumir que
$myparameter
vai não contêm aspas simples (caso contrário, veja aqui ou usar aprintf '%q' ...
solução por janmoesen), você pode simplesmente colocar aspas simples$myparameter
para evitar o problema split-on-espaço no lado do servidor.fonte