Netcatéame eso!!
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 🙂
[…] Generalmente, cuando necesito transferir un fichero de forma rápida entre dos ordenadores de una misma red, utilizo NetCat. No seré yo el que comente cómo funciona ni cómo utilizarlo, ya que PpLuX lo dejó bastante claro en una de sus entradas. […]
[…] Existe por ahà un script llamado woof usado principalmente para mandar ficheros de una forma sencilla, está escrito en python y bueno, no es que tenga una cruzada contra python, pero tampoco creo que tengamos que hacerlo ahora todo en python por muy de moda que esté. Concretamente woof no va bien en cygwin (o eso dicen), o bueno igual quieres usarlo desde tu fonera hackeada y no quieres/necesitas python… yo que sé, el caso es que hay formas más fáciles de mandar ficheros a-lo-servidor-web. Yo os propongo una que sólo hace uso de netcat (que siempre puedes usar a mano netcateando). […]