Я начинающий пользователь Linux, а также новичок в ssh и туннелях.
В любом случае, моя цель - поддерживать туннель ssh открыть в фоновом режиме.
Для этого я написал следующий пакет, который затем добавил в crontab (пакет автоматически обрабатывается каждые 5 минут в рабочие дни и с 8 утра до 9 вечера). Я читал в каком-то другом потоке stackoverflow, что следует использовать autossh, который будет гарантировать, что ssh всегда будет в порядке при повторной проверке. Я тоже ....
#!/bin/bash
LOGFILE="/root/Tunnel/logBatchRestart.log"
NOW="$(date +%d/%m/%Y' - '%H:%M)" # date & time of log
if ! ps ax | grep ssh | grep tunnelToto &> /dev/null
then
echo "[$NOW] ssh tunnel not running : restarting it" >> $LOGFILE
autossh -f -N -L pppp:tunnelToto:nnnnn nom-prenom@193.xxx.yyy.zzz -p qqqq
if ! ps ax | grep ssh | grep toto &> /dev/null
then
echo "[$NOW] failed starting tunnel" >> $LOGFILE
else
echo "[$NOW] restart successfull" >> $LOGFILE
fi
fi
Моя проблема в том, что иногда туннель перестает работать, хотя все выглядит нормально (ps ax | grep ssh> результат показывает две ожидаемые задачи: основная задача autossh и сам туннель ssh). Я действительно знаю о проблеме, потому что туннель используется сторонним программным обеспечением, которое вызывает ошибку, как только туннель больше не отвечает.
Итак, мне интересно, как мне улучшить свою партию, чтобы она могла проверить туннель и перезапустить его, если он окажется мертвым. Я видел некоторые идеи в там , но они были завершены подсказкой "autossh" ... которую я уже использую. Таким образом, у меня нет идей ... Если у кого-то из вас есть, я с радостью взгляну на них!
Спасибо за интерес к моему вопросу и за ваши (возможно) предложения!