Як завантажити файл із командного рядка за допомогою FTP чи SSH?


30

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

Як я можу це зробити?

#!/bin/sh

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

Це не дає відповіді на це запитання, але, можливо, це може допомогти деяким людям: curl.io дозволяє вам завантажувати файл через bash на публічний хостинг http (дійсний протягом декількох годин, я думаю)
Vincent Fenet

Відповіді:


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

Звичайно, це потрібно підлаштувати під ваш смак. Замініть користувача @ хост реальною інформацією. Вам буде запропоновано завантажити пароль.


4

Якщо ви дійсно повинні використовувати ssh (замість scp), ви можете зробити:

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

але звичайний scp (як пропозиція про тангенс ) найкращий.


Я використовую FTp-з'єднання, скажіть, будь ласка, як передавати або копіювати файли з локального на віддалений, я, використовуючи filezilla або wincp ... Мені потрібно витягнути ZIP або скопіювати з локального на віддалений
Sushivam

1

scp - краща відповідь, оскільки вона буде зашифрована через SSH.

Однак якщо ви хочете робити це над стандартними ftp, подивіться на ncftpput. Він призначений спеціально для завантаження файлу:

NAME ncftpput - Інтернет-програма передачі файлів для скриптів

SYNOPSIS ncftpput [параметри] локальні файли віддаленого хоста віддаленого каталогу ...



0

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


0

Для екземпляру ec2 ви також повинні передати .pemфайл,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.