execução do comando remoto SSH no script

2

No meu script, 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 eco dá saída assim:

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

Depois da coisa "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, quando copia o comando da saída de eco e o executa diretamente do terminal, ele funciona como um charme. Alguma idéia por quê?

    
por dstronczak 06.02.2013 / 15:49

2 respostas

0

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

    
por 06.02.2013 / 16:26
0

Nohup pode ser útil para você.

Tente integrar algo assim no link abaixo.

ssh -n -f user@host "sh -c 'cd /whereever; nohup ./whatever > /dev/null 2>&1 &'"

link

    
por 06.02.2013 / 16:03

Tags