Как загрузить файл из командной строки с помощью FTP или SSH?

30

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

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

#!/bin/sh

cd ./files-to-upload
#upload the files
Эндрю
источник
Это не отвечает на этот вопрос, но, возможно, это может помочь некоторым людям: curl.io позволяет загружать файл через bash на общедоступный http-хостинг (я думаю, он действителен в течение нескольких часов)
Винсент Фенет

Ответы:

56

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

scp <file to upload> <username>@<hostname>:<destination path>
Тангенс
источник
можно ли передать пароль и с этим? Кроме того, это инициализирует сессию SSH? Могу ли я запустить другие команды?
Андрей
2
Нет, вы не можете передать пароль. Но вы можете настроить аутентификацию по ssh ключу. Это означает, что вы аутентифицируетесь не с помощью пароля, а с помощью ключа, который хранится в файле и автоматически передается при подключении. И нет, опять же, вы не можете выполнять другие команды с этим.
Феликс
Я имею в виду, вы можете подключиться с помощью SSH, а затем запустить SCP? Или это отдельные команды?
Андрей
2
sshи scpразные команды. Для ознакомления см. Ssh.com/support/documentation/online/ssh/adminguide/32/…
tangens
1
@Felix должен был указать, что если у вас не настроена аутентификация по ключу ssh, вам будет предложено ввести пароль . Это означает, что наличие этой настройки не является критическим требованием для использования этой команды
aexl
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 (как предложение тангенса ) является лучшим.

Джимми Хедман
источник
Я использую соединение FTp, не могли бы вы рассказать, как перенести или скопировать файлы с локального на удаленное, я использую filezilla или winscp ... Мне нужно извлечь zip или скопировать с локального на удаленное
Sushivam
1

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

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

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

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

DuPie
источник
0

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

Джо Интернет
источник
0

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

Дэвид
источник
0

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

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
Elavarasan
источник