Можно ли подключиться по ssh извне ssh к хосту, с которого было ssh соединение?
Имеется два хоста. С одного хоста на другой делается ssh-соединение.
На удаленном хосте имеется директория ~/repository, к которой возможен конкурентный доступ еще десятками других хостов. Для решения этой проблемы на удаленном хосте также имеется файл ~/repisotory.lock, на который все хосты вынуждены делать блокировку на время доступа к директории ~/repository, чтобы решить проблему конкуренции.
Блокировка осуществляется такой командой на удаленном хосте:
(
flock -n 9
# ... commands executed under lock ...
) 9>~/repisotory.lock
Моя задача требует возможность скачать данные из удаленной директории ~/repository на локальный хост. Но это скачивание должны быть под блокировкой файла ~/repisotory.lock на удаленном хосте.
Как мне скопировать файл с удаленной директории ~/repository на локальный хост, используя уже установленное ssh соединение? Команда копирования должна быть на месте # ... commands executed under lock ..., чтобы она полностью была под блокировкой.
Для копирования файлов по ssh я использую rsync, хотя точно такая же проблема будет с любой командой.
Если я пропишу такую команду:
(
flock -n 9
rsync -a ~/repository айпи-локального-хоста:~
) 9>~/repisotory.lock
Тогда rsync откроет новое ssh соединение, заново попросит аутентификацию. Но ведь соединение уже имеется с локального хоста на удаленный, как его использовать?
Ответы (1 шт):
Это не ответ на мой вопрос, но это решает мою проблему:
rsync -a --rsync-path="flock -s ~/reposotry.lock rsync" айпи удаленного хоста:~/repository ~