tundra37 писал(а):Немножко не в тему но все-таки.
Ещё немножко не в тему...
В реальном проекте облачного сервиса понадобилось, помимо основных функций, забрасывать файлы эталонных изображений (время от времени, изредка) на публичный сервер, стоящий где-то под Челябинском

... в определённый каталог файловой системы сервера.
Сначала сгородил дополнительный TCP/IP клиент-серверный канал на отдельном пользовательском порту...
А потом решил использовать для этого передачу этих файлов по протоколу SSH, по тому же, по которому я доступаюсь и к терминальным сессиям на этом сервере. Некоторую сложность здесь в конкретике создаёт то, что:
- доступ по SSH разрешён на нестандартном порту TCP, скажем, 4430 ...
- доступ по SSH запаролен, скажем, пароль для пользователя xxx - yyy
- закачка файлов должна происходить из скрипта, автономно, возможность ручного ввода на запрос пароля исключается.
Пришлось повозиться...
Разыскать и установить (стандартным apt-get) утилиту sshpass:
Код: Выделить всё
olej@ACER:~/2018_WORK$ aptitude search sshpass
i sshpass - Non-interactive ssh password authentication
Поэкспериментировать с копированием туда и обратно:
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/cloud/images$ scp -vvv -P 4430 xxx@87.249.221.249:/home/android/xxx xxx1
...
OpenSSH_7.9p1 Debian-6, OpenSSL 1.1.1a 20 Nov 2018
...
Transferred: sent 1984, received 2316 bytes, in 0.9 seconds
Bytes per second: sent 2230.5, received 2603.7
debug1: Exit status 0
olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/cloud/Aplit.test$ ls
adhast.1.jpg Boris1.1.jpg cywan.10.jpg damvo.1.jpg Egor1.2.jpg howar.10.jpg Olena3.4.jpg rafox.10.jpg simm.10.jpg
olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/cloud/Aplit.test$ sshpass -p yyy scp -P 4430 * xxx@87.249.221.249:/home/android/FaceDL/cloud/known2
И всё это вылилось в такой вот скрипт загрузки:
Код: Выделить всё
#!/bin/bash
if [ $# -eq 0 ]
then
echo "using: $0 <file1 [file2 ...]>"
exit 1
fi
while [ $# -ne 0 ]
do
if [ ! -f $1 ] ; then
echo "wrong file path: $1"
shift
continue
fi
sshpass -p yyy scp -P 4430 $1 xxx@87.249.221.249:/home/android/FaceDL/cloud/known2
echo "sent out: $1"
shift
done