problema con scripts (bash+expect) en cron

Ricardo Utreras Estrella utreras en gmail.com
Dom Jul 8 00:37:28 CLT 2007


Hugo Bravo R escribió:
> Estimados,
> 
> Situacion:
>    Necesito respaldar una base mysql desde un servidor remoto, guardando 
> una copia local y a la vez, subirla a un sercidor ftp.
> 
> Procedimiento:
>    Hago un dump desde el equipo local y luego lo comprimo a tar.gz con 
> un script en bash.
>    Luego de esto, el mismo script llama a otro script con expect que 
> sube el archivo al ftp.
> 
>    Cuando ejecuto el script por consola, ningun problema, funciona ok...
>    El problema es cuando intento ponerlo en el cron.
>    Cree 2 links simbolicos en /etc/cron.daily, que apuntan a cada 
> archivo script.
> 
>    La maquina es un CentOS 4.5.
> 
> Archivos:
> 
> 1.- script en bash
> ---------------------------------------------------------------------------
> #!/bin/bash
> 
> fecha=$(date +%Y%m%d)-$(date +%H%M)
> 
> mysqldump -h 200.xx.xx.xx -u usuario -ppasswd --opt -f -v basex > 
> tmpbk/basex.$fecha.sql
> 
> tar zcvf tmpbk/basex.$fecha.tar.gz tmpbk/basex.$fecha.sql
> 
> rm -f tmpbk/basex.*.sql
> 
> #Aqui llama al script que sube al ftp
> ./bk.ftp.asp.exp
> 
> rm -f tmpbk/basex.*
> ---------------------------------------------------------------------------
> 
> 2.- script en expect
> ---------------------------------------------------------------------------
> #!/usr/bin/expect
> 
> set site "ftp.servidor.cl"
> set user "usuario en servidor.cl"
> set pass "passwd"
> set path "tmpbk/"
> set files "basex.*"
> 
> spawn ftp $site
> expect "Name"
> 
> send "$user\r"
> expect "Password:"
> 
> send "$pass\r"
> expect "ftp>"
> 
> send "prompt\r"
> expect "ftp>"
> 
> send "bin\r"
> expect "ftp>"
> 
> send "lcd $path\r"
> expect "ftp>"
> 
> send "mput $files\r"
> expect -timeout -1 "ftp>"
> 
> send "bye\r"
> expect eof
> ---------------------------------------------------------------------------
> 
> Espero me puedan ayudar...
> Gracias de antemano.
> 
> Hugo

No se ejecuta o te da fallos?
Si te da fallos puede ser que las locales afecten el formato de 
especificacion de las fechas, no siendo el mismo para tu usuario que el 
que ejecuta cron, por ejemplo en mi caso, cuando especifico fechas en 
mis scripts de respaldo Tivoli en cron debo hacerlo con el formato 
DD/MM/AA, mientras que si el mismo script lo ejecutara en consola el 
formato seria MM/DD/AA.

-- 
Atte. Ricardo Utreras Estrella


Más información sobre la lista de distribución Linux