Como obter o $? de um comando executado via ssh

3

Eu tenho um script que usará o ssh para executar um comando em um nó remoto. O nó remoto é um dispositivo, portanto não posso (encorajado a não) fazer alterações nele. Agora eu tenho um script como este:

  ssh REMOTE-NODE -l login "ls" > output 2>&1

  status=$?

Portanto, $status terá o status do comando ssh. Como posso obter o status $? do comando remoto (ls neste exemplo, mas para qualquer comando chamado)? Não consigo criar um script intermediário no nó remoto que possa retornar o status.

    
por Scavenger 19.12.2017 / 16:13

1 resposta

4

O ssh não retorna como de costume?

EXIT STATUS
ssh exits with the exit status of the remote command or with 255 if an error occurred.

$ ssh user@localhost 'exit 123' ; echo $?
user@localhost's password: 
123

Embora como @thrig indique nos comentários, se o cliente ssh é eliminado devido a um sinal, $? pode mostrar o número normal de 128 + em vez de 255, mesmo que não seja o código de saída do comando remoto. Em vez disso, em um teste rápido, parece que se o comando remoto sair devido ao sinal, ssh retornará 255.

    
por 19.12.2017 / 16:15

Tags