Como entender a saída de “ssh -O check” em scripts bash?

1

Eu quero verificar se o processo mestre está ouvindo ssh.sock ainda está ativo. Atualmente estou verificando se o código de saída retornado por ssh -S ssh.sock -O check <my-server> é zero, mas não tenho certeza se essa é a maneira correta de lidar com esse problema e não consigo encontrar nenhuma documentação. O processo mestre deve ter ServerAliveInterval=20 , para que ele morra se a conexão falhar. Existe algum caso em que o código de retorno seria diferente de zero, mas o processo em si estaria ativo?

    
por AlexBG 19.11.2015 / 10:37

1 resposta

0

A maneira mais fácil de tentar é iniciar o processo ( ssh -MS ssh.sock <my-server> ), remover o soquete e tentar como ele se comportará. Com conexão de trabalho:

$ ssh -S ssh.sock -O check <my-server>
Master running (pid=24314)
$ echo $?
0

Quando não há soquete, você terá algo assim:

$ ssh -S ssh.sock -O check <my-server>
Control socket connect(ssh.sock): No such file or directory
$echo $?
255

Eu acredito que manipular o código de retorno é o caminho correto.

Is there any case in which the return code would be non-zero, but the process itself would be alive?

Como no exemplo anterior, quando o soquete é removido por algum motivo, sua conexão está ativa, mas você não pode verificá-la de "fora" e não pode conectar novas sessões a ela.

    
por 19.11.2015 / 10:51

Tags