Woof, un script python para transferir ficheros vía HTTP

24 Enero 2007

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.

NetCat es la solución ideal para entornos Unix o similares, ya que suele venir preinstalado (o es instalable de forma muy sencilla) en muchas de las distribuciones GNU/Linux, por ejemplo.

El panorama cambia cuando tienes que transferir datos desde un sistema Unix o similar o otro basado en Windows. La solución, a primera vista, pasa por:

  • Instalar un servidor Web/FTP/SAMBA para servir los ficheros, si tienes ganas de complicarte la vida configurando los sevicios.
  • Apañártelas con las “carpetas compartidas” de Windows, usando smbclient desde Unix, con todo el riesgo que eso conlleva que otros puedan modificar los ficheros.
  • ¡Hey! Netcatéame eso, pero instala antes Netcat para Windows, con un par.
  • Hombre, ya puestos, instala Cygwin, que te da acceso a Netcat de forma fácil en systemas Windows
  • Qué narices, por mensajería instantánea, no me importa que el fichero pase por Redmond.
  • No, mejor pasamos el fichero de 400MBi por correo electrónico… no te digo…
  • ¡Por Tutatis! ¿Alguien tiene un stick USB que me pueda dejar?

Bien, como podéis comprobar he exagerado un poco el problema. Seamos realistas, al fin y al cabo, solo es necesario transferir un fichero.

La forma más sencilla de descargar un fichero es hacerlo a través de un navegador Web, y prácticamente todos los equipos tienen acceso a alguno. ¿No sería maravilloso que los usuarios de Windows pudieran descargar el fichero así de fácil? Bien, en este momento es cuando entra en escena Woof.

Woof es un pequeños script en python para transferir ficheros, pero con la particularidad de que realmente es un pequeñajo (y estúpido) servidor Web que sólo sabe servir el fichero (o directorio) que nosotros le indiquemos. Y punto.

Pasemos a un ejemplo práctico:

# ./woof mifichero
Now serving on http://192.168.2.3:8080/

¡Oooh! Sólo tenemos que visitar la dirección que nos indica para recibir el fichero. ¡Genial! ¡Hasta Internet Explorer será capaz de descargar el fichero!

Por defecto, Woof sirve el fichero una sola vez y en cuanto termina, cierra la conexión y termina. Es como levantar un sevidor web, configurarlo para que sirva el fichero/directorio, y cerrarlo cuando termine. Así de sencillo y automáticamente. Para indicar a Woof que permita descargar el fichero varias veces, podemos utilizar el modificador -b y con -p podemos elegir el puerto por el que servir el fichero.

Si en vez de un fichero indicamos un directorio, Woof nos facilitará la faena y lo que enviará será un archivo comprimido en .tar.gz (¿no es maravilloso?). De todas formas, con el modificador -u podemos indicar que no se comprima, por lo que se enviará un fichero .tar con todo el contenido.

Finalmente, con el modificador -i podemos especificar la interfaz de red, en caso que tengamos varias.

Bueno, me he dejado la característica más curiosa para el final: con el modificador -s en vez de un fichero, Woof se distribuye a sí mismo (es lo que tiene ser un ser un script), con lo que podemos compartirlo de forma sencilla para que otros puedan utilizarlo (incluso desde Windows, si tenemos Python instalado, claro).

Espero que os sirva.

[Vía Mukund]

PD: PpLuX y Polge… ¿Qué tal utilizar Woof para el proyecto ese en que hay que descargar ciertos ficheros de ciertos sitios? Ya me comentais.

GNU/Linux, Programación, Tecnología | Comentarios | Trackback Saltar al inicio de la página

Al habla

  •  
  •  
  •  

Puedes estar al tanto de nuevos comentarios con el feed de los comentarios.

Al fin y al cabo todo es cuestión de unos y ceros…




Archivos

Meta