Como faço para reinicializar por uma conexão ssh sem um código de retorno de -1?

3

O sistema com o qual estou trabalhando usa ssh para se conectar remotamente a uma máquina Linux. Em seguida, ele executa um único comando shell e analisa a saída do comando shell.

Se eu executar reboot , recebo o código de saída -1 , pois a reinicialização naturalmente mata a conexão ssh. Qualquer código de saída diferente de 0 faz com que o sistema registre uma falha, portanto, tenho tentado gravar um comando de linha única que será reinicializado e sairá da ssh session normalmente.

As máquinas em questão são muito básicas e o utilitário de reinicialização não permite nenhuma opção, por isso não posso simplesmente agendar uma reinicialização para mais tarde.

Depois de pensar, tentei executar

$ sleep 3 && reboot & exit

O que funciona quando eu o chamo manualmente: a conexão é fechada com o código de erro 0 e 3 segundos depois a máquina é reinicializada. Ótimo.

Mas o mesmo comando executado em nosso sistema não é realmente reinicializado. Apenas retorna o código de saída 0 e a reinicialização nunca acontece.

Por que isso seria?

    
por YetAnotherRCG 22.02.2018 / 18:29

1 resposta

2

Use o comando shutdown .

shutdown --reboot +1 "System is going down for reboot in 1 minute"

Eu suspeito que a razão reboot não funcione é porque requer um tty. Você pode tentar executá-lo com um plano de fundo tty, mas o comando shutdown tem tudo de que você precisa, incluindo o cancelamento - como diz na resposta:

Shutdown scheduled for Thu 2018-02-22 15:19:33 MST, use 'shutdown -c' to cancel.
    
por 22.02.2018 / 23:18