Execute command in sftp connection through script

как root:

mount --bind /media/usbdrive /home/you
13
08.10.2016, 00:18
4 ответа

Вы можете изменить свой скрипт для передачи команд в данном документе, например,

#!/bin/bash

sftp -oPort=23 kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins <<EOF
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar   
exit
EOF

Маркер << , за которым следует имя ( EOF ), сообщает скрипт для передачи следующих строк, пока имя не будет найдено в начале строки (само по себе).

28
27.01.2020, 19:52

Вы также можете использовать параметр -b в sftp , чтобы указать файл, содержащий команды для sftp .

Например, вы можете поместить все свои команды в файл sftp_commands.txt :

cd /home/kalenpw/TestWorld/plugins
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar
exit

и запустить sftp как:

sftp -oPort=23 -b sftp_commands.txt kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins 

Или вы также можете передать команды через STDIN если вы не хотите использовать файл.

Из man sftp :

-b batchfile

Пакетный режим считывает серию команд из входного пакетного файла вместо стандартного ввода. Поскольку в нем отсутствует взаимодействие с пользователем, его следует использовать вместе с неинтерактивной аутентификацией. Пакетный файл '-' может использоваться для обозначения стандартного ввода. sftp прервется, если любая из следующих команд завершится ошибкой: get, put, reget, rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, символическая ссылка и lmkdir. Прерывание при ошибке можно подавить для каждой команды, предварительно зафиксировав команду символом «-» (например, -rm / tmp / blah *).

6
27.01.2020, 19:52

Вы можете предпочесть использовать scp вместо sftp . scp ведет себя так же, как обычная команда cp , но файлы могут быть удаленными:

scp -P 23 /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins

Это копирует файл на вашем локальном компьютере в каталог на удаленном компьютере без необходимости используйте старый командный интерфейс в стиле ftp.

Службы ssh , scp и sftp обычно доступны, если они есть; одна и та же программа-демон предоставляет их все одновременно. В принципе, администратор сервера может отключить любой из них, но на практике это случается довольно редко.

10
27.01.2020, 19:52

Другим вариантом может быть использование curl:

curl -u user -T file.tar sftp://example.com/home/user/
4
27.01.2020, 19:52

Теги

Похожие вопросы