The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Как сделать, чтобы ssh в скрипте не завершался?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Консоль / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Как сделать, чтобы ssh в скрипте не завершался?"  +5 +/
Сообщение от КриоМух (ok), 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/sbin

while 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 сеанс успешно установленный привязать может и сразу поэтому завершается.

Подскажите пожалуйста, как эту херомантию реализовать?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Как сделать, чтобы ssh в скрипте не завершался?"  +4 +/
Сообщение от Аноним (1), 26-Янв-24, 22:17 
> Подскажите пожалуйста, как эту херомантию реализовать?

А разьве autossh такого не умеет?

Ответить | Правка | Наверх | Cообщить модератору

2. "Как сделать, чтобы ssh в скрипте не завершался?"  +4 +/
Сообщение от КриоМух (ok), 27-Янв-24, 00:09 
> А разьве 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

Спасибо за наводку Товарищ Аноним!

Ответить | Правка | Наверх | Cообщить модератору

8. "Как сделать, чтобы ssh в скрипте не завершался?"  +/
Сообщение от Stellarwind (?), 09-Фев-24, 17:14 
Запускать в screen / tmux не пробовали?
Ответить | Правка | Наверх | Cообщить модератору

4. "Как сделать, чтобы ssh в скрипте не завершался?"  +3 +/
Сообщение от anan (?), 29-Янв-24, 09:41 
Как вариант? попробуйте запускать через screen.

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

6. "Как сделать, чтобы ssh в скрипте не завершался?"  +2 +/
Сообщение от КриоМух (ok), 29-Янв-24, 13:25 
> Как вариант? попробуйте запускать через screen.

Да, но хочется "без рук". Сейчас autossh выше сообщением в /etc/rc.local добавил и всё. Автоматом всегда работает. При подвисании автопереключается тут же. В общем отличное решение.

Ответить | Правка | Наверх | Cообщить модератору

5. "Как сделать, чтобы ssh в скрипте не завершался?"  +3 +/
Сообщение от Аноним (5), 29-Янв-24, 10:38 
>[оверквотинг удален]
>  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

Ответить | Правка | Наверх | Cообщить модератору

7. "Как сделать, чтобы ssh в скрипте не завершался?"  +1 +/
Сообщение от gg (??), 31-Янв-24, 22:56 
/usr/bin/ssh -D 1080 -p 12345 my@10.2.0.3 < /dev/null
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру