Я начинающий пользователь Linux, а также довольно новичок в ssh и туннелях.
В любом случае, моя цель - поддерживать открытый ssh-туннель в фоновом режиме.
Для этого я написал следующую партию, которую затем добавил в crontab (эта партия автоматически обрабатывается каждые 5 минут в рабочие дни и с 8:00 до 21:00).
Я прочитал в другом потоке в 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" ... которую я уже использую. Таким образом, у меня нет идей ... Если у кого-то из вас есть, я бы с удовольствием посмотрел на них!
Спасибо за интерес к моему вопросу и за ваши (возможно) предложения!