Teste de acesso SSH

2

Eu mudei meu roteador doméstico e banda larga recentemente (para o BT Infinity), e notei que meu servidor SSH se tornou pouco confiável. É claro que configurei o SSH para ser encaminhado para o host correto no novo roteador, e isso deve ser verdade, pois às vezes posso me conectar a ele remotamente, mas às vezes não.

Eu tenho um dedi e esperava criar um script que ocasionalmente 'pingasse' o servidor SSH de vez em quando, para testar se estava funcionando. Existe uma maneira de invocar o comando SSH para que ele apenas aperte o botão handshakes com o servidor e não faça mais, e retorne um código de status útil para dizer que o servidor está ativo ou inativo? Apenas para que eu possa adicioná-lo a um script como este:

#!/bin/bash

LOG_FILE="$HOME/ssh.log"

while [ true ]; do
    testSSH

    if [ $? -ne 0 ]; then
        echo "'date +%y%m%d-%H%M%S' server down" >> $LOG_FILE
    fi

    sleep 60
done

ou, alternativamente, seria fácil fazer tal programa?

EDIT: como um aparte, se alguém está interessado ou está no saber sobre isso, eu mudei minhas configurações de encaminhamento de porta para o endereço IP definido pelo usuário em vez de pelo endereço MAC (o padrão), apenas meter, com o SSH host tendo um IP estático. Não que eu use spoofing de MAC, mas só porque eu ouvi que é 'buggy' no hub inicial. Quando olho para a página de dispositivos conectados, não vejo meu computador lá. Existem switches entre meu computador e o roteador, mas isso não deve fazer nenhuma diferença, certo?

    
por Doddy 05.12.2012 / 15:22

1 resposta

3
$ ssh -q host true

retorna 0 se está tudo bem e 255 se a conexão expirou. Obviamente, isso só funciona se você conseguir efetuar login nesse host.

Se isso não for uma opção, algo como

$ echo "" | nc host port

me dá uma "incompatibilidade de protocolo" (e valor de retorno 0) se a conexão com o servidor for bem-sucedida e um valor de retorno de 1 se a conexão foi recusada. Você também pode usar a opção -w para especificar um tempo limite personalizado (novamente, retornar o valor de 1 se a conexão expirar).

    
por 05.12.2012 / 15:33

Tags