Execução de comando remoto SSH em script

Execução de comando remoto SSH em script

No meu script eu faço algo assim:

command="some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;"
ssh_command="ssh root@$ip '$command'"

echo $ssh_command
exec $ssh_command

O echo fornece uma saída como esta:

ssh [email protected] 'some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;'

Depois do "exec", recebo a saída:

bash: some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;: No such file or directory

No entanto, ao copiar o comando da saída de eco e executá-lo diretamente do terminal, ele funciona perfeitamente. Alguma idéia do porquê?

Responder1

execsubstitui o shell por um programa, invocando-o com os argumentos fornecidos. O shell vê 2 tokens: "exec" e "some/path/script.sh arg1 arg2; some/path/script2.sh arg1 arg2;". O segundo argumento é interpretado como um caminho para a execução de um programa, incluindo todos os espaços e ponto e vírgula. Somente um shell sabe dividir argumentos em espaços em branco e separar comandos em ponto e vírgula. Portanto, você deve substituir o execpor uma chamada para um shell, como sh -c "$ssh_command".

Responder2

Nãopode ser útil para você.

Tente integrar algo assim no link abaixo.

ssh -n -f usuário@host "sh-c'cd /qualquer lugar; nohup ./qualquer > /dev/null 2>&1 &'"

https://stackoverflow.com/q/29142/1666510

informação relacionada