Wie lade ich eine Datei von der Kommandozeile mit FTP oder SSH hoch?

30

Ich habe dies noch nie zuvor getan und erstelle ein Bash-Shell-Skript, um dies für mich zu tun. Ich werde mich auch über ssh verbinden, um einige Dinge zu erledigen (von denen ich bereits weiß, wie man das macht). Vielleicht gibt es also eine Möglichkeit, Dateien über ssh hochzuladen, damit ich alles in einer Verbindung erledigen kann?

Wie kann ich das machen?

#!/bin/sh

cd ./files-to-upload
#upload the files
Andrew
quelle
Das beantwortet diese Frage nicht, aber vielleicht kann dies einigen Menschen helfen: curl.io ermöglicht es Ihnen, eine Datei über bash auf ein öffentliches http-Hosting hochzuladen ( meiner Meinung nach für einige Stunden gültig)
Vincent Fenet

Antworten:

56

Sie können scpzum Kopieren auf einen Remote-Computer verwenden.

scp <file to upload> <username>@<hostname>:<destination path>
Tangens
quelle
Kann das Passwort auch hierüber weitergegeben werden? Initialisiert dies auch eine SSH-Sitzung? Kann ich auch andere Befehle ausführen?
Andrew
2
Nein, Sie können das Passwort nicht weitergeben. Sie können jedoch die SSH-Schlüsselauthentifizierung einrichten. Das heißt, Sie authentifizieren sich nicht über ein Passwort, sondern über einen Schlüssel, der in einer Datei gespeichert ist und automatisch bei der Verbindung übertragen wird. Und nein, Sie können damit keine anderen Befehle ausführen.
Felix
Ich meine, kannst du dich mit ssh verbinden und dann scp ausführen? Oder sind sie separate Befehle?
Andrew
2
sshund scpsind verschiedene Befehle. Eine Einführung finden Sie unter ssh.com/support/documentation/online/ssh/adminguide/32/…
tangens
1
@Felix hätte darauf hinweisen sollen, dass Sie zur Eingabe eines Kennworts aufgefordert werden, wenn Sie die SSH-Schlüsselauthentifizierung nicht eingerichtet haben . Das bedeutet, dass dieses Setup keine kritische Voraussetzung für die Verwendung dieses Befehls ist
aexl
6

Sie suchen wahrscheinlich nach SCP oder ähnlichem.

#!/bin/bash

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

Natürlich muss dies nach Ihren Wünschen angepasst werden. Ersetzen Sie user @ host mit Ihren echten Informationen. Sie werden aufgefordert, ein Passwort zum Hochladen einzugeben.

John T
quelle
4

Wenn Sie wirklich ssh (anstelle von scp) verwenden müssen, können Sie Folgendes tun:

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

aber normales scp (wie tangens suggestion) ist das beste.

Jimmy Hedman
quelle
Ich benutze eine FTP-Verbindung, könntest du bitte sagen, wie man Dateien von lokal nach fern überträgt oder kopiert, ich benutze filezilla oder winscp ... Ich muss eine Zip oder Kopie von lokal nach fern
extrahieren
1

scp ist die bessere Antwort, da es über SSH verschlüsselt wird.

Wenn Sie dies jedoch über Standard-FTP tun möchten, schauen Sie sich ncftpput an. Es wurde speziell entwickelt, um eine Datei hochzuladen:

NAME ncftpput - Internet-Dateiübertragungsprogramm für Skripte

ÜBERSICHT ncftpput [Optionen] Remote-Host-Remote-Verzeichnis lokale Dateien ...

DuPie
quelle
0

curl ist ein gutes Programm, das mehrere Protokolle verarbeitet.

Joe Internet
quelle
0

Wenn Sie den scpBefehl (Sichere Kopie) verwenden, wird eine Verbindung zum Client hergestellt, und wenn Sie noch keinen Fingerabdruck für das Hostgerät gespeichert haben, werden Sie nach dem Hostkennwort gefragt, andernfalls sollte die Verbindung zum Host automatisch hergestellt werden.

David
quelle
0

Für ec2 müssen Sie die .pemDatei auch übergeben,

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