Cuando dos personas se quieren mandar uno o varios ficheros entre dos máquinas linux/unix-like lo primero que uno piensa es en usar scp o sftp… En el mejor de los casos tengo que desplazarme a su máquina picar mi password en su teclado, o que venga quien sea y hacerlo al revés. ¿Qué pasa si ni siquiera hay SSH? ¿ usamos Samba ? ¿ ftp ? … ¡Mucho más fácil! usamos netcat.
Este es uno de los trucos más tontos que he encontrado nunca, y desde entonces cada vez que quiero pasar algo con alguien le digo escribe “netcat $#@!#%”, da igual las veces que lo usen que casi nunca se acuerdan de los comandos. Así que este post va especialmente dirigido, con todo el cariño del mundo, a todos los que saben que existe netcat pero no se acuerda cómo se usa. Y si eres nuevo al netcateo, bienvenido
Breve descripción: netcat es un “cat” por red, se usa igual que se usa un cat solo que con ip’s y puertos, y permite enviar un flujo de datos por red de un punto a otro. Como todo en esta vida de cliente-servidor, uno escucha y el otro se conecta aunque eso no determina quién envía a quién.
El que escucha:
netcat -l -p 6969
El que se conecta:
netcat ip_del_amigo 6969
6969 es el puerto, tanto el que escucha como el que recibe tienen que estar de acuerdo en eso (obviamente), y la ip_del_amigo es, la “ip del amigo” :). El que vaya a escuchar siempre tiene que escribir primero el comando, esto hará que se quede esperando que el otro haga la conexión.
Ahora enviaremos algo, y escribo las dos opciones que en el fondo hacen lo mismo mandar algo del ordenador (A) -> (B).
Primera opción (A) escucha (B) se conecta.
1º en el ordenador (A)
tar -cvzf - lista_de_ficheros_a_mandar | nc -l -p 6969
2º en el ordenador (B)
nc ip_de_A 6969 | tar -xvzf -
Segunda opción (B) escucha (A) se conecta (pero la información sigue yendo de A -> B):
1º en el ordenador (B)
nc -l -p 6969 | tar -xvzf -
2º en el ordenador (A)
tar -cvzf - lista_de_ficheros_a_mandar | nc ip_de_B 6969
¡¡y ya esta!!
PD: Esta configuración de NetCat y tar hace que se quede esperando con la conexión establecida aun cuando ha terminado de enviar, para evitarlo puedes añadir la opción -q 1 a los dos netcats (envía y recibe) lo que hace que se cierre la conexión sola. También puedes pulsar “control-C” para acabar. El problema es que el “-q 1″ no es estandar de todos los netcats.
PD(2): También hay netcat para windows
