Назад | Перейти на главную страницу

Сценарий оболочки для создания фонового SSH-соединения, если его нет

Есть очень похожий вопрос на этот, но в моей ситуации есть дополнительная деталь.

В основном я использую ControlMaster для ускорения SSH-соединений. Итак, я использую:

CurrentUser=$(whoami)
session=$(ps -el | grep $(id -u) |sed -e 's/sshd//g'| grep ssh)
if [ "$session" = "" ]
then
        ssh -TMNf synchro@129.130.155.30 &
fi

После этого кода у меня есть другая команда. Цель команды ssh - исключительно работать в фоновом режиме, чтобы поддерживать открытый сокет для более быстрых подключений (если в течение короткого времени не происходит никаких вызовов, он истекает по времени и закрывается из-за неактивности.)

Проблема в том, что этот скрипт не закрывается и не возвращается к вызывающему. Он становится <несуществующим> процессом и не возвращается, пока я вручную не завершу созданный сеанс ssh. Как разрешить скрипту вернуться к вызывающему и Созданный ssh ​​работает в фоновом режиме?

Редактировать: Я хочу, чтобы созданный сеанс ssh сохранялся после завершения сценария, чтобы после этого сокет оставался открытым для более быстрых подключений с помощью команды rsync. С открытым сокетом я перехожу с 3-4 секунд передачи на миллисекунды

Как насчет того, чтобы попробовать autossh:

http://www.harding.motd.ca/autossh/

Он управляет SSH-соединением за вас и возвращается к вызывающему, как только вы его запускаете.

вы хотите работать с нету команда?