Forum Astuces.divers [Web/Réseau] Transfert de fichiers (le FTP du geek)

Posté par (page perso) .
Tags : aucun
2
26
août
2004

Un moyen simple de transférer des fichiers (ou n'importe quel type de données) entre deux ordinateurs connectés par un réseau IP est d'utiliser netcat.



Version simple:

recipient$ nc -l -p $RECIPIENT_PORT > $FILE
sender$ cat $FILE | nc -q0 $RECIPIENT_ADDRESS $RECIPIENT_PORT

Plusieurs fichiers avec compression:

recipient$ nc -l -p $RECIPIENT_PORT | gzip -c -d | tar -x
sender$ tar -c $FILES | gzip -c | nc -q0 $RECIPIENT_ADDRESS $RECIPIENT_PORT


gzip peut très bien être remplacé par bzip2 avec les même options. On peut aussi utiliser l'option -z (ou -j) de tar à la place de gzip (bzip2) mais il parait que c'est moins portable.



Plusieurs fichiers de manière "sécurisée":

recipient$ nc -l -p $RECIPIENT_PORT | gpg --decrypt | tar -x
sender$ tar -c $FILES | gpg -s -e -r $RECIPIENT | nc -q0 $RECIPIENT_ADDRESS $RECIPIENT_PORT


À noter que gpg compresse déjà les données donc faire passer le tout par gzip avant ou après est normalement inutile. Pour contrôler la compression, mieux vaut utiliser directement les options de gpg. Les données peuvent quand même être corrompue pendant le transfert et on ne s'en rendra compte qu'à la fin donc évitez d'utiliser cette méthode pour transférer des gros fichiers via des réseaux pas trop fiables (à moins d'avoir envie de recommencer plusieurs fois). Un snc (secure netcat) serait plus adapté pour ce genre d'utilisation mais je sais pas si ça existe déjà.



Remplacez $RECIPIENT_ADDRESS par l'adresse IP (ou le nom DNS) du destinataire, $RECIPIENT_PORT par le port, $FILE(S) par le(s) nom(s) de fichier(s) à transférer et $RECIPIENT par le nom du destinataire.



On peut aussi inverser qui "écoute" et qui se connecte pour que le destinataire établisse la connexion (de manière à passer outre certains firewalls):



recipient$ nc -q0 $SENDER_ADDRESS $SENDER_PORT > $FILE
sender$ cat $FILE | nc -l -p $SENDER_PORT


Normalement cette astuce devrait aussi fonctionner sous Windows mais j'ai pas testé (est-ce que le shell Windows permet les redirections de flux ?).

  • # ssh aussi

    Posté par (page perso) . Évalué à 1.

    Pour un tranfert sécurisé on peut le faire avec ssh. Bien sur dans ce cas il faut un serveur ssh qui tourne sur la machine de destination, mais c'est quasiment toujours le cas surtout si la machine en question est sur un réseau. Par contre, il n'est pas nécéssaire de se logger sur la machine cible.

    Exemple : sftp fichier user@machine:/home/user/temp
    On peut transférer des répertoires avec l'option -r

    Moyennant une autre astuce le transfert peut se faire sans mot de passe ce qui permet par exemple d'automatiser un transfert. Je vous laise consulter le man pour ca.
    • [^] # Re: ssh aussi

      Posté par (page perso) . Évalué à 2.

      L'intérêt ici c'est justement de ne pas avoir besoin d'un serveur SSH. Par ailleurs peu après avoir envoyé cette astuce, j'ai découvert cryptcat: http://farm9.org/Cryptcat/(...)

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # ILLISIBLE

    Posté par . Évalué à 2.

    La prochaine fois que tu postes un truc Krunch, s'il te plais, fais un effort pour indenter ton texte ...
    Ca donne pas trop envie de lire.

    En utilisant SSH il y a aussi SCP
    http://people.via.ecp.fr/~alexis/formation-linux/ssh.html#AEN7749(...)
    • [^] # Re: ILLISIBLE

      Posté par (page perso) . Évalué à 2.

      J'avais indenté tout ça correctement, mais à la prévisualisation c'est parti, jai alors ajouté une note pour le dire. Quand l'astuce a été validée, le texte était parfaitement lisible et bien indenté mais apparement il y a eu une mise à jour du site qui a remis ça comme avant. Je vais le signaler dans les forums.

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.