Entradas con la etiqueta ftp

Sincronización local de ftp desde Windows

Hace unos días me vi en la necesidad de descargar ficheros periódicamente de varios servidores ftp en un Windows 7. En este caso concreto, además, los ficheros se irían actualizando día a día, lo que me obligaba a entrar en cada una de las cuentas ftp cada vez que quisiera sincronizar los datos, forzar la descarga de todos los ficheros, especificar que no sobreescribiera los ya existentes y comprobar de esta forma si había novedades o no. Eso para cada una de las cuentas ftp, claro. En fin, una tarea tediosa como mínimo.

En Linux tenía claro como automatizarlo todo, pero no así en Windows. Estuve investigando un poco para ver qué posibilidades tenía para solucionar este tema y solo encontré dos o tres clientes ftp de pago que realizaban este tipo de tarea. Aún así tampoco terminaba de convencerme ninguno. Finalmente, encontré un software gratis que permite hacerlo por medio de un script. Veamos como configurarlo paso a paso.

  1. El software se llama WinSCP, es gratis y puede descargarse directamente desde su página web. Lo descargamos e instalamos. Una vez hecho esto, no necesitaríamos ni siquiera arrancarlo
  2. Abrimos nuestro editor de texto preferido (notepad, por ejemplo, o notepad++ en mi caso) y creamos un nuevo script con el siguiente formato:

    # Opciones generales
    # Automatically abort script on errors
    option batch abort
    # Disable overwrite confirmations that conflict with the previous
    option confirm off

    # Primera cuenta FTP
    open ftp://usuario_1:contraseña_1@servidor_ftp_1
    option transfer binary
    synchronize local -criteria=size c:\ruta_a_guardar_1 /
    close

    # Segunda cuenta FTP
    open ftp://usuario_2:contraseña_2@servidor_ftp_2
    option transfer binary
    synchronize local -criteria=size c:\ruta_a_guardar_2 /
    close

    exit

    Para cada una de las cuentas debemos especificar tanto el usuario del ftp y la clave, como el servidor ftp y la ruta en la que queremos sincronizar el contenido de la carpeta. Es importante especificar “synchronize local” para que solo sincronice en una dirección, de forma que si borramos o añadimos ficheros en local, esto no afecte al directorio remoto. Por supuesto la dirección puede cambiarse, e incluso sincronizarse en ambas direcciones en caso en que fuera nuestra intención. Para más información, podéis echar un vistazo al manual de scripting

  3. Una vez generado el script, podemos ejecutarlo desde una ventana cualquiera de msdos (Barra de Windows -> Todos los Programas -> Accesorios -> Símbolo de sistema o, directamente, llamando al comando cmd). Para ello empleamos el siguiente comando:
    "C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script=c:\ruta_script\script.txt
  4. Para terminar de rizar el rizo, podríamos configurar la tarea para que se ejecutara periódicamente en segundo plano y actualizara los ficheros necesarios. Para eso podéis echarle un vistazo a este apartado del manual de WinSCP.

Espero que os sea tan útil como me está siendo a mi estos días. Tened en cuenta que, aunque WinSCP es gratis, si le sacáis rendimiento y os apetece podéis plantearos realizar una donación a sus desarrolladores via paypal desde su página web.

Etiquetas: , , , , , , , ,

Ejecutar comandos sin información sensible en Unix/Linux

Acabo de encontrar (acabo de rescatar de la cola de pendientes :-D) un artículo que explica los peligros de ejecutar comandos en un terminal Unix/Linux incluyendo información sensible en la línea de comandos (como, por ejemplo, claves de acceso). En este caso concreto se centra en el intérprete de SQL (sqlplus) de Oracle, pero no deja de ser aplicable a cualquier comando ejecutado en consola.

No he podido evitar recordar como hace unos doce o trece años teníamos que tener especial cuidado tras nuestros monitores de fósforo verde de los datos que los administradores del sistema podían ver sobre nuestra actividad en la red.

Para centrar un poco más la acción, debeis tener en cuenta que, por aquel entonces, el disponer en la facultad/escuela de una cuenta con acceso a internet era algo realmente difícil de conseguir. Aunque estuviera terminantemente prohibido compartir claves de acceso al sistema, era una práctica habitual. ¿Como puedes pretender que un futuro ingeniero no se interese por esa nueva cosa llamada internet? El acceso desde casa sólo podía hacerse a través de la línea telefónica, con un ISP que habitualmente no estaba en tu misma provincia. El precio era el equivalente a realizar una llamada telefónica interprovincial. No fue hasta que apareció Infovía que la red empezó a popularizarse en ambientes domésticos.

DEC-VT220-0a

En el caso de la escuela, nos conectábamos a través de terminales DEC. En concreto, recuerdo especialmente el VT220, supongo que porque era el que predominaba en la sala. Todos compartíamos un mismo servidor, donde teníamos nuestra cuenta en el sistema. El terminal era una “caja tonta” que se conectaba al servidor.

Como podeis suponer, el terminal tenía un monitor de fósforo verde y sin ningún tipo de capacidad gráfica. El acceso a internet era en modo texto y se hacía a través de distintas aplicaciones, en función de lo que quisieramos hacer. Así a bote pronto recuerdo:

  • Lynx: navegador web en modo texto. Posteriormente salió links, cuya principal característica es que ¡soporta frames! Todo un avance. La cantidad de páginas que no podíamos ver por culpa de los dichosos marcos.
  • Elm y, posteriormente mutt: gestor de correo.
  • Slrn: lector de news (para el acceso a usenet).
  • Sirc: Acceso a los canales de IRC.
  • Ftp, telnet, gopher, finger… y resto de utilería básica.

Por supuesto todas estas aplicaciones pueden seguir usándose y están disponibles en cualquier distribución de linux.

En este escenario, el administrador podía ver el comando que ejecutaba cada usuario símplemente ejecutando un “ps“. Si no queríamos que el administrador viera más de la cuenta, procurábamos ejecutar los comandos con el mínimo número de parámetros posibles. Por ejemplo, al invocar a links, podemos indicar en la línea de comandos directamente una página web. Haciendo esto, podrían ver dicha página en nuestro proceso:

Si ejecutamos

[lolo@desarrollo ~]$ links www.pedazodepaginaqueexplicacomopetarununix.com

Y otro usuario o administrador podría ver

[root@desarrollo ~]# ps aux | grep links
lolo 17613 0.0 0.1 8108 2428 pts/1 S+ 13:46 0:00 links www.pedazodepaginaqueexplicacomopetarununix.com
root 17644 0.0 0.0 4556 732 pts/3 S+ 13:46 0:00 grep links

En estos casos, es mucho más recomendable entrar en links llamando al comando sin ningún parámetro y, una vez dentro del mismo, cargar la página web que nos interese. Esto mismo es aplicable a la hora de hacer un ftp, llamar algún comando de correo…

En nuestro caso, el administrador solo habría visto

[root@desarrollo ~]# ps aux | grep links
lolo 17613 0.0 0.1 8108 2428 pts/1 S+ 13:46 0:00 links
root 17644 0.0 0.0 4556 732 pts/3 S+ 13:46 0:00 grep links

Y ahí queda este truquillo tan tonto de newbie pero que me recuerda a mis primeros escarceos con las redes y los unixes. Retro que es uno :’)

Etiquetas: , , , , , , , , ,

Escuchando

Ultimamente no he escuchado nada

Tags Musica

Cache is empty.
lastfm logo

Fotillos

T9
Fotillos...

Fotillos por RSS 2.0