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

Как открыть соединение sftp и выполнить команду sftp в той же команде оболочки

Есть ли возможность открыть sftp-соединение с удаленным сервером и выполнить команду sftp в той же строке из оболочки.

Что-то вроде этого:

sftp user@example.com && put /tmp/test.txt /tmp/

где put - команда sftp.

Моя идея состоит в том, чтобы поместить файл с локального сервера на удаленный сервер из сценария bash, где на удаленном сервере разрешен только sftp.

Подход 1:

echo "put /tmp/test.txt /tmp/" | sftp user@example.com

Подход 2:

Использовать -b вариант:

-b пакетный файл

Пакетный режим считывает серию команд из входного пакетного файла вместо стандартного ввода. Поскольку в нем отсутствует взаимодействие с пользователем, его следует использовать вместе с неинтерактивной аутентификацией. Пакетный файл -' may be used to indicate standard input. sftp will abort if any of the following commands fail: get, put, rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink, and lmkdir. Termination on error can be suppressed on a command by command basis by prefixing the command with a- 'символ (например, -rm / tmp / blah *).