Installer un réseau local, ça ouvre des perspectives.
J'avais noté dans un coin de ma tête des manips rigolotes à faire
avec netcat. Lues dans
l'excellente
documentation de mon ami JML sur Tom's RTBT, je m'étais promis
d'essayer à l'occasion.
L'idée est d'ouvrir un port sur une machine tournant sur Tom's RTBT
pour lui envoyer des fichiers sans utiliser le FTP, ni SSH, ni un
autre protocole évolué. Ainsi on devrait pouvoir installer un
système minimal sur un (tout petit) disque d'une machine n'ayant
pas de lecteur de CD Rom (genre DD 250 Mo, RAM 20 Mo). Bien sûr, on
aura au préalable formaté le disque de façon appropriée, puis on
aura monté la partition.
On boote la petite machine avec la disquette de Tom. Si on est
derrière un serveur DHCP (Livebox, Freebox, etc.) la carte réseau
devrait être configurée automatiquement. On vérifie par ifconfig
quelle est son adresse IP.
Pour transférer un ou quelques fichiers, on y tape ensuite la
commande suivante :
nc -l -p 1025 > fichier_de_destination
depuis la machine source, elle aussi en réseau, on tape :
cat fichier_d_origine | nc -q0 IP_de_la_petite_machine 1025
L'option « -q0 » de netcat (nc) signifie que la connexion doit être
fermée 0 seconde après le passage du caractère « EOF » (End Of File
ou fin de fichier).
Bien sûr on n'est pas obligé d'utiliser le port 1025. Puisqu'on est
root sur la petite machine on peut prendre n'importe quel port, y
compris inférieur à 1024.
Au lieu de cat on peut utiliser dd de la façon suivante :
dd if=fichier d'origine | nc IP_de_la_petite_machine 1025
Avec dd, on peut même copier une partition, voire un disque
complet. Par ailleurs on peut se dispenser de l'option « -q0 »
puisque dd ferme lui-même la connexion à la fin du transfert.
Par contre pour une arborescence (un répertoire contenant ou non
des sous-répertoires, etc.), il faut utiliser tar.
Comme le but de l'opération est de transférer une installation
minimale (entre 100 et 200 Mo) sur le disque de la petite machine,
on lancera sur la machine de destination :
nc -l -p 1025 | tar -xf -
La machine restera en attente.
Sur celle où on a au préalable préparé une arborescence (par
debootstrap par exemple) :
tar -c ./l_arborescence | nc -q0 IP_de_la_petite_machine 1025
Grâce à l'option « -q0 » de nc, la connexion est
interrompue dès la fin du transfert et la petite machine rend la
main.
On a compacté (tar -c) l'arborescence, on l'a envoyée dans la
connexion netcat, on l'a récupérée sur la petite machine en la
décompactant à la volée (tar -xf -). Le
« f - » est nécessaire à cause de la version de la
commande tar présente sur la disquette Tom's RTBT. Dans un autre
contexte, c'est à dire entre deux machines normales,
« tar -x » suffit après le tube.
J'ai testé, ça fonctionne. Reste plus qu'à installer la petite
machine. Quand on aura le temps. Il n'y a pas que l'informatique
dans la vie.