Retornando um valor de um script em execução em uma máquina escrava

0

Eu tenho um script (na minha máquina local). No script, uma conexão é estabelecida via ssh para uma máquina escrava e executa um script de construção no escravo:

ssh $user@$slave_ip bash $dest_root/$dest_dir/slave_run

Existe uma maneira de capturar o código de saída retornado do script slave_run em uma variável de script pai?

    
por Raph Peres 12.09.2017 / 07:59

2 respostas

0

Seu comando (com aspas duplas adicionadas):

ssh "$user@$slave_ip" bash "$dest_root/$dest_dir/slave_run"

A captura do código de saída estará em $? após a execução desse comando.

Exemplo:

$ ssh someserver sh -c 'false'
$ echo $?
1

Para capturá-lo:

$ ssh someserver somecommand
$ code=$?

Como alternativa, obtenha o comando no servidor para gerar o código de saída e capturá-lo como uma string:

$ code=$( ssh server sh -c "somecommand; echo \$?" )

No seu caso:

$ code=$( ssh "$user@$slave_ip" sh -c "$dest_root/$dest_dir/slave_run; echo \$?" )

É necessário escapar o $ de $? , pois o comando está entre aspas duplas e gostaríamos que $? fosse avaliado pelo shell no lado do servidor, não pelo shell no cliente. / p>     

por 12.09.2017 / 11:10
0

Para examinar o código de saída, você precisa examinar uma variável especial que é "$?" Esta variável diz a você o código de saída do último comando que você executou.

ssh $user@$slave_ip 'bash $dest_root/$dest_dir/slave_run ; echo $?'
    
por 12.09.2017 / 08:32