Загрузите файл по ssh и выполните команду на удаленной машине.

Загрузите файл по ssh и выполните команду на удаленной машине.

Я пытаюсь найти самый простой способ загрузить файл с помощью ssh, а затем запустить команду на удаленной машине в той же сессии ssh для некоторой постобработки, чтобы мне не нужно было снова входить в систему. Загрузка должна, если возможно, показывать какой-то индикатор прогресса.

До сих пор я рассматривал scp и rsync, и оба они не способны запускать какие-либо хуки. (Я мог бы использовать параметр --rsync-pathдля выполнения какого-нибудь скриптадоrsync) но я хочу сделать постобработку. Есть ли способ открыть сессию ssh, загрузить, выполнить команду и снова закрыть ее?

решение1

Ну, вы могли бы просто передать все это через одну sshкоманду с a catна другом конце. Здесь я загружаю скрипт оболочки, делаю его исполняемым и запускаю:

$ cat sayhi.sh | ssh myserver 'cat > ./remotehi.sh ; chmod +x ./remotehi.sh ; ./remotehi.sh'
hello, world!

решение2

Вам может понадобиться ControlMasterмеханизм в ssh.

Связанный контент