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