29

Я никогда не делал этого раньше, и я создаю скрипт оболочки bash, чтобы сделать это для меня. Я также буду подключаться через ssh, чтобы сделать некоторые вещи (которые я уже знаю, как сделать). Так, может быть, есть способ загрузить файлы через SSH, чтобы я мог сделать все это в одном соединении?

Как я могу это сделать?

#!/bin/sh

cd ./files-to-upload
#upload the files

7 ответов7

54

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

scp <file to upload> <username>@<hostname>:<destination path>
6

Вы, вероятно, ищете SCP или подобное.

#!/bin/bash

cd ./files-to-upload
scp * user@host:/path/to/upload/files/to

конечно, это должно быть настроено по вашему вкусу.Замените user @ host своей реальной информацией. Вам будет предложено ввести пароль для загрузки.

4

Если вы действительно должны использовать ssh (вместо scp), вы можете сделать:

for filename in *; do
  cat $filename | ssh user@host "cd /path/to/upload/files/to; cat - > $filename"
done

но обычный scp (как предложение тангенса ) является лучшим.

1

scp - лучший ответ, так как он будет зашифрован по SSH.

Однако, если вы хотите сделать это через стандартный ftp, посмотрите на ncftpput. Он предназначен специально для загрузки файла:

NAME ncftpput - программа для передачи файлов через Интернет.

Синтаксис ncftpput [опции] удаленные хосты удаленные каталоги локальные файлы ...

0

curl - хорошая программа, которая обрабатывает несколько протоколов.

0

Для экземпляра ec2 вы также должны передать файл .pem ,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
0

Когда вы используете команду scp (безопасное копирование), она подключается к клиенту, и если у вас еще не сохранен отпечаток пальца для хост-устройства, он запросит пароль хоста, в противном случае он должен автоматически подключиться к хосту, который я считаю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .