Wie kopiere ich eine Datei ohne scp in einer SSH-Sitzung?


55

Ich habe mich mit ssh bei einem System angemeldet und auf beiden Systemen ist kein scp vorhanden. So kopieren Sie eine Datei, ohne das Programm scp zu verwenden.


Ist netcat (nc) auf beiden Systemen vorhanden? Wenn dies der Fall ist, tunneln Sie mit Ihrer ssh-Sitzung einen TCP-Port und verwenden Sie nc an diesem Port.

Haben Sie rsync?
Slhck

3
Sie können dies auch tun:ssh user@remotehost cat /path/to/remote/file > /path/to/local/file
nm

@nm Anführungszeichen erforderlich (für mich Ubuntu Server)
Ivan Black

@nm Funktioniert bei mir nicht - Datei ist beschädigt (ich vermute, die Login-Nachricht bricht sie).
Monnef

Antworten:


94

So senden Sie eine Datei:

cat file | ssh ajw@dogmatix "cat > remote"

Oder:

ssh ajw@dogmatix "cat > remote" < file

So empfangen Sie eine Datei:

ssh ajw@dogmatix "cat remote" > copy

20
@ggg das stimmt überhaupt nicht. cd /tmp; cat /bin/bash > test; chmod a+x test; diff test /bin/bash; ./testalles funktioniert gut. Es gibt nichts von Natur aus "Magisches" an Binärdateien. Beide Dateien in meinem Beispiel sind im Vergleich identisch und haben die gleiche Prüfsumme. Das Kopieren und Einfügen aus einem Terminalfenster heraus funktioniert zwar nicht, da beispielsweise Steuersequenzen und nicht druckbare Zeichen vorhanden sind. Bei Verwendung von Pipes wie diesen kommt dies jedoch nie in die Nähe eines Terminals.
Flexo

@Flexo Ich brauche so etwas, die einzige Ausnahme ist, ich muss alles jpg aus einem Ordner einfügen. Wie kann ich / storage / sdcard1 / * jpg und gleichnamige >Dateien durchlaufen ?
George Profenza

2
@ GeorgeProfenza müssen Sie tarin die Mischung hinzufügen . tar cvf - /path/*.jpg | ssh foo@bar.com "tar xvf -"oder etwas ähnliches sollte funktionieren.
Flexo

Eine Folge der obigen Aussagen von ggg und Flexo ist, dass Sie die Option "-t" nicht für ssh verwenden können.
mjg123

1
Nett! Sie können auch pv anstelle der ersten Katze verwenden, um eine Fortschrittsanzeige zu erhalten, z. B.pv file | ssh ajw@dogmatix "cat > remote"
Theolodus

3

Versuche dies:

cat myfile.txt | ssh me@otherhost 'cat - > myfile.txt' 

2
So viele Katzenrufe sind überhaupt nicht nötig
Flexo

1

Sie können xxdund einige hässliche Anführungszeichen verwenden, um mehrere Dateien zu kopieren, Befehle auf ihnen auszuführen und sie auszuführen:

ssh -t foo@bar.com "
echo $'"$(cat somefile | xxd -ps)"' | xxd -ps -r > "'somefile'"
chmod +x somefile
echo $'"$(cat someotherfile | xxd -ps)"' | xxd -ps -r > "'someotherfile'"
chmod +x someotherfile
./somefile
./someotherfile
"

Ah, meine Antwort ist eindeutig zu l33t
Aric

-1

Neben dem Weiterleiten der Datei an einen Remote- catComputer können Sie möglicherweise auch einen SFTP-Client zum Übertragen der Dateien verwenden.


+1 aber es sollte beachtet werden, dass das OP versucht, scp zu vermeiden, da es auf den Systemen nicht existiert. In Anbetracht dieser Einschränkung ist es auch wahrscheinlich, dass ein FTP-Server auf der empfangenden Seite vorhanden sein muss, wodurch der Kopiervorgang von einer anderen Software abhängt, als dies normalerweise standardmäßig der Fall ist.
Paul Sasik

-1

python3 -m http.serverim selben Verzeichnis mit dem gewünschten Datei - danach können Sie curloder wgetoder eine Datei mit Ihrem Browser herunterladen. Beachten Sie, dass mit diesem Befehl alle Ihre Dateien aus dem aktuellen Verzeichnis öffentlich verfügbar sind, bis Sie Ctrl+ drücken C.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.