Comment copier un fichier sans utiliser scp dans une session ssh?


55

Je me suis connecté à un système avec ssh et il n'y a aucun scp présent sur les deux systèmes. Comment copier un fichier sans utiliser le programme scp.


Est-ce que netcat (nc) est présent sur les deux systèmes? Si c'est le cas, utilisez votre session ssh pour tunneler un port TCP et utilisez nc sur ce port.

Avez - vous rsync?
Slhck

3
vous pouvez aussi faire ceci:ssh user@remotehost cat /path/to/remote/file > /path/to/local/file
n. «pronoms» m.

@nm quotes required (pour moi, serveur ubuntu)
Ivan Black le

@nm ne fonctionne pas pour moi - le fichier est corrompu (je suppose que le message de connexion le casse).
Monnef

Réponses:


94

Pour envoyer un fichier:

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

Ou:

ssh ajw@dogmatix "cat > remote" < file

Pour recevoir un fichier:

ssh ajw@dogmatix "cat remote" > copy

20
@ggg ce n'est pas vrai du tout. cd /tmp; cat /bin/bash > test; chmod a+x test; diff test /bin/bash; ./testtout fonctionne bien. Il n'y a rien de magique par nature sur les fichiers binaires. Les deux fichiers de mon exemple sont identiques et ont la même somme de contrôle. Il est vrai que copier-coller depuis une fenêtre de terminal ne fonctionnera pas à cause d'éléments tels que des séquences de contrôle et des caractères non imprimables, mais l'utilisation de canaux comme celui-ci n'approche jamais d'un terminal.
Flexo

@Flexo J'ai besoin de quelque chose comme ça, la seule exception est que je dois diriger tous les jpg d'un dossier. Comment faire pour parcourir / storage / sdcard1 / * jpg et >les fichiers portant le même nom?
George Profenza le

2
@ GeorgeProfenza, vous devrez ajouter tarau mélange. tar cvf - /path/*.jpg | ssh foo@bar.com "tar xvf -"ou quelque chose de similaire devrait fonctionner.
Flexo

Une des implications de ce que ggg et Flexo disent ci-dessus est que vous ne pouvez pas utiliser l'option "-t" pour ssh.
Mjg123

1
Agréable! Vous pouvez également utiliser pv à la place du premier chat pour obtenir une pv file | ssh ajw@dogmatix "cat > remote"
barre de

3

Essaye ça:

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

2
pas besoin de nombreux appels de chats
Flexo

1

Vous pouvez utiliser xxdplusieurs citations moche pour copier plusieurs fichiers, ainsi que pour exécuter et exécuter des commandes dessus:

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, ma réponse est clairement trop l33t
Aric

-1

Outre le cattransfert du fichier vers une télécommande , vous pouvez également utiliser un client SFTP pour transférer les fichiers.


+1 mais il convient de noter que l'OP tente d'éviter SCP car il n'existe pas sur les systèmes. Compte tenu de cette contrainte, il est également probable qu'un serveur FTP doit exister du côté du destinataire, ce qui rend le processus de copie dépendant d'un logiciel autre que celui utilisé habituellement par défaut.
Paul Sasik

-1

python3 -m http.serverdans le même répertoire avec le fichier désiré - après que vous pouvez curlou wgetou télécharger un fichier avec votre navigateur. Notez qu'avec cette commande en cours, tous vos fichiers du répertoire en cours seront disponibles publiquement, jusqu'à ce que vous appuyiez sur Ctrl+ C.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.