2

Недавно я изменил свой домашний маршрутизатор и широкополосный доступ (на BT Infinity) и заметил, что мой SSH-сервер стал довольно ненадежным. Конечно, я настроил пересылку SSH на правильный хост на новом маршрутизаторе, и это должно быть правдой, поскольку иногда я могу подключиться к нему удаленно, но иногда нет.

У меня есть dedi, и я надеялся создать скрипт, который время от времени «пингует» SSH-сервер, чтобы проверить, работает ли он. Есть ли способ вызвать команду SSH, чтобы она просто рукопожатие с сервером и не делает больше, и возвращает полезный код состояния, чтобы сказать, что сервер работает или не работает? Просто, чтобы я мог добавить его в скрипт, как это:

#!/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

или, альтернативно, было бы легко сделать такую программу?

РЕДАКТИРОВАТЬ: кроме того, если кто-то заинтересован или знает об этом, я изменил мои настройки переадресации портов на пользовательский IP-адрес вместо MAC-адреса (по умолчанию), просто incase, с хостом SSH, имеющим Статический IP. Не то чтобы я вообще использовал спуфинг MAC, но только потому, что слышал, что он «глючит» на домашнем хабе. Когда я смотрю на страницу подключенных устройств, я не вижу там своего компьютера. Между моим компьютером и маршрутизатором есть переключатели, но это не должно иметь никакого значения, верно?

1 ответ1

3
$ ssh -q host true

возвращает 0, если все в порядке, и 255, если время соединения истекло. Это, очевидно, работает, только если вы действительно можете войти на этот хост.

Если это не вариант, что-то вроде

$ echo "" | nc host port

дает мне "несоответствие протокола" (и возвращает значение 0), если подключение к серверу установилось успешно, и возвращает значение 1, если подключение было отклонено. Вы также можете использовать опцию -w чтобы указать пользовательское время ожидания (опять же, возвращаемое значение 1, если время соединения истекло).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .