Есть ли возможность открыть 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 *).