netcat : je “déTAR” d’une machine vers l’autre
“déTAR” à distance
Pense-bête : j’ai un gros .tar sur un serveur, je dois l’extraire sur un autre serveur. MAIS, sur cet autre serveur, je n’ai pas la place pour récupérer le .tar puis le décompresser, c’est-à-dire stocker deux fois en terme d’espace.
Donc j’utilise netcat pour faire un “pipe” entre commande d’une machine à l’autre.
Une fois le programme netcat installé, peu importe par quel biais, et en considérant que vous n’avez pas de restriction réseau entre les 2 machines (sinon ouvrez le port ci-dessous en UDP), vous faites ceci :
Sur la machine cible, on prépare une socket en écoute, ici sur le port 12345 :
moi@destination:/ou/je/veux/ecrire$ netcat -l -p 12345 | tar xvf -
Sur la machine émettrice, on balance la purée dans le tuyau :
moi2@source:~$ cat monfichier.tar | netcat aladdin 12345
A adapter dans le cas d’un fichier .bz2 ou .gz, par exemple.
Recopie d’arborescence d’un serveur à l’autre
Une autre utilisation très courante est la suivante : recopier une arborescence d’un serveur à l’autre, sans utiliser rsync, scp etc. Pourquoi se passer de ces outils ? il y a des cas où on ne les a pas. Et puis là on évite le cryptage, tout ça, charge CPU, blablabla.
Ca donne :
dest$ nc -l p 12345 | tar x
src$ tar cvf - mon_arborescence | nc dest 12345
EDIT : truc bien crade : ça marche aussi pour injecter du SQL…
dest$ nc -l p 12345 | mysql -u monlogin -p
src$ cat test.sql | nc dest 12345
Attention à ce que vous faites là quand même.
Notez qu’au lancement de la commande sur la machine de destination, le mot de passe mysql est demandé tout de suite.
Voilà
A+