Как сделать, чтобы ssh в скрипте не завершался?, КриоМух, 26-Янв-24, 21:35 [смотреть все]Добрый день, Уважаемые!Помогите пожалуйста, решить вопрос. Мне надо чтобы на компе в фоновом режиме всегда был активен проброс порта через ssh. Т.е. чтобы я его не руками заупскал, а автоматом это делалось, а если связь порвалась - то чтобы восстанавливалось. Примерно так: /etc/rc.local
#!/bin/sh/usr/bin/su - user -c /home/user/scripts/my.1080.sh & /home/user/scripts/my.1080.sh
#!/bin/sh export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbinwhile true do /usr/bin/netstat -an | /usr/bin/grep "127.0.0.1.1080" if [ $? -ne 0 ] ; then /usr/bin/ssh -D 1080 -p 12345 my@10.2.0.3 fi sleep 1 done
Всё бы ничего, но если я скрипт этот руками запускаю, то всё ок, он вываливается в удалённую ssh консоль, порт проброшен, всё ок. А вот если это происходит через /etc/rc.local или через cron, то видно что порт поднимается и убирается. Я так понимаю, что как таковой консоли нет, к которой он этот ssh сеанс успешно установленный привязать может и сразу поэтому завершается. Подскажите пожалуйста, как эту херомантию реализовать?
|
- Как сделать, чтобы ssh в скрипте не завершался?, Аноним, 22:17 , 26-Янв-24 (1) +4
> Подскажите пожалуйста, как эту херомантию реализовать?А разьве autossh такого не умеет?
- Как сделать, чтобы ssh в скрипте не завершался?, КриоМух, 00:09 , 27-Янв-24 (2) +4
> А разьве autossh такого не умеет?Добрый вечер Уважаемый! Спасибо огромное, теперь буду эту тулзу знать. Она решает, только не получается её автоматически сделать. Та же самая проблема, которую я описал в первом сообщении. Если запускаю
autossh -M 20000:7 -p 20022 -D 1080 my@10.2.0.3 из консоли, то всё ок. А вот добавив в конец & или -f в опции autossh, вcё перестаёт работать. На удалённой машине в этот момент вижу успешная авторизация (по ключу она тут), и что потом клиент просто вышел. Я так понял, что типа не создаётся сеанс под работу этой команды, и в итоге пока писал это, почитал про сам ssh и в ключи добавил -fNT итоговая команда которая решает весь вопрос:
autossh -M 20000:7 -f -p 20022 -D 1080 -fNT my@10.2.0.3 Спасибо за наводку Товарищ Аноним!
- Как сделать, чтобы ssh в скрипте не завершался?, anan, 09:41 , 29-Янв-24 (4) +3
Как вариант? попробуйте запускать через screen.
- Как сделать, чтобы ssh в скрипте не завершался?, КриоМух, 13:25 , 29-Янв-24 (6) +2
> Как вариант? попробуйте запускать через screen.Да, но хочется "без рук". Сейчас autossh выше сообщением в /etc/rc.local добавил и всё. Автоматом всегда работает. При подвисании автопереключается тут же. В общем отличное решение.
- Как сделать, чтобы ssh в скрипте не завершался?, Аноним, 10:38 , 29-Янв-24 (5) +3
>[оверквотинг удален] > sleep 1 > done > > Всё бы ничего, но если я скрипт этот руками запускаю, то всё > ок, он вываливается в удалённую ssh консоль, порт проброшен, всё ок. > А вот если это происходит через /etc/rc.local или через cron, то видно > что порт поднимается и убирается. Я так понимаю, что как таковой > консоли нет, к которой он этот ssh сеанс успешно установленный привязать > может и сразу поэтому завершается. > Подскажите пожалуйста, как эту херомантию реализовать?echo "tmux new-session -d 'ssh -D 1080 -p 12345 my@10.2.0.3'" >> /etc/rc.local
- Как сделать, чтобы ssh в скрипте не завершался?, gg, 22:56 , 31-Янв-24 (7) +1
/usr/bin/ssh -D 1080 -p 12345 my@10.2.0.3 < /dev/null
|