unix script (shell) para borrar archivos de hace 2 dias. Cumpleeeeeeeeeeeeeeeeeee!!!
Aug 10

Si, ya se que FTP no es lo ideal para la transferencia de archivos en un ambiente hostil, pero estos scripts pueden ayudarte si estas dentro de una red de area local.

En ocasiones necesitamos copiar archivos de un servidor a otro para esto tenemos un pequeño script que puede ayudarnos con esa tarea

** Nota: Hay varias maneras de automatizar las transferencias del ftp, esta es solo una manera de hacerlo, si prefieres utilizar otra o comentar sobre ella, hazlo

1. Crear un archivo llamado .netrc en tu $HOME

con esta estructura:machine ip_addres_or_remote_host login user password passwd
por ejemplo:

machine localhost login sismo password mypassword

** puedes agregar múltiples entradas, una por host
** los permisos en el archivo deben ser ilegibles para todos excepto el dueño, puedes hacerlo con chmod 600 .netrc

2. Crear un archivo que contenga las instrucciones del ftp que deseas realizar

por ejemplo:

ASCII
cd /cualquier_path/
mput *.txt
mput *.dbf
bye

** en este caso guardé mi archivo como instructions.txt

3. Crear un archivo que invoque el ftp y pasar el archivo con las instrucciones del ftp como parámetro

por ejemplo:

echo “comienza transferencia del archivo…”
ftp - i localhost < instructions.txt
echo “listo...”

** en este caso guardé este archivo como automate.sh

se cambian los permisos del .sh para poder ejecutarlo

chmod u+x automate.sh

y finalmente lo corro con

./automate.sh

si tienes archivos pesados puedes enviarlos a background con el nohup

Por ejemplo:

nohup /export/home/sismo/automate.sh &

si te gusta o disgusta deja comentario :D

8 Responses to “Automatizar transferencias por FTP (UNIX)”

  1. FireBoneX Says:

    Ya postea algo nuevo!!!! jajajaja :p saludos!!!

  2. sismo Says:

    jajaja, haber si en esta sema, me aviento algo de oracle

  3. aterra Says:

    muy bien me ha venido tu manual, sí señor

  4. Arlette Says:

    Y en que momentos llamas al archivo .netrc?

  5. sismo Says:

    Arlette:

    Cuando invocas el comando FTP, lo primero que hace es buscar ese archivo (.netrc) si no lo tienes te pide usuario y password.

    Saludos

  6. Frank Says:

    Excelente, una forma de automatizar la transferencia de archivos entre servidores UNIX.

  7. Frank Says:

    Saludos Sismo,

    Segui tus consejos en lo referente a la automatización de esta forma de transferencia, se ejecuta bien al llamarlo desde la linea de comandos $

    $sh ftpautomata.sh

    La salida que muestra es:
    Negociando con el anfitrion…..
    AUTH not understood
    AUTH not understood
    KERBEROS_V4 rejected as an authentication type
    Negociacion finalizada..

    y es correcto transfiere el archivo.

    Ahora bien, el ejercicio consiste en transferir cada 1 hora este mismo archivo.

    Coloque el siguiente shell en el crontab del Linux:

    1er intento –> Con nombre del usuario que ejecuta y sh
    —————-
    00 * * * * scati sh /home/scati/ftpautomata.sh infalsei >> /home/scati/e4

    2do intento —> Solo con el usuario
    —————–
    00 * * * * scati ../home/scati/ftpautomata.sh infalsei >> /home/scati/e4

    3er intento Solititooo.
    —————–
    00 * * * * ../home/scati/ftpautomata.sh infalsei >> /home/scati/e4

    Todos generan salida siguiente:

    Negociando con el anfitrion…..
    Name (141.146.168.51:scati): Login incorrect.
    Negociacion finalizada..

    Pregunta:

    ¿A que se debe el Login incorrect, si por la linea de comando no existe el problema y solo se presenta usando el crontab ?.

  8. sismo Says:

    Que tal Frank:

    Si el archivo ftpautomata.sh ya tiene permisos de ejecucion asi debería funcionar

    00 * * * * /home/scati/ftpautomata.sh infalsei >> /home/scati/e4

    ahora el dato infalsei es un texto que pasas como parametró?

    saludos,

Leave a Reply