[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Redirección de salida a "mail"



On Fri, Aug 24, 2007 at 12:05:11PM -0300, Daniel Bareiro wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> El jueves 23 de agosto del 2007 a las 12:58:55,
> Luis Rodrigo Gallardo Cruz escribió:
> 
> >> Estoy ejecutando a través de cron un script en el que se hacen cuatro
> >> exports mediante el comando exp de Oracle usando la siguiente
> >> sintaxis:
> 
> >> exp bla/bla FILE=${EXP_DIR}/bla_$APP_DATE.dmp \
> >>   OWNER=bla GRANTS=Y COMPRESS=Y | \
> >>   mail -s "Salida del export del esquema bla de $HOSTNAME" $MAILTO
>  
> >> Y si bien me llegan los mensajes con la salida del comando a la
> >> cuenta de correo del usuario bajo la que se ejecuta la tarea cron,
> >> los mensajes que se mandan mediante la redirección con el pipe a la
> >> cuenta $MAILTO llegan con su cuerpo en blanco.
> 
> > ¿Ya te aseguraste que la llamada a exp tiene *todo* el entorno que
> > necesita para funcionar. A veces llamar cosas desde cron es difícil
> > por que no está toda nuestra configuración presente. Quita la
> > redirección a mail y vé si así recibes algo.
> 
> Sí. Como bien decís, si no tuviera las variables de entorno necesarias,
> la llamada al comando fallaría y eso no sucede en este caso, ya que 

> a la
> cuenta del usuario con el que se ejecuta la tarea llega la salida de la
> ejecución del export indicando el estado de su terminación, pero no llegan
> a la cuenta que pongo en el script. 

> Pero el comando tiene salida estándar desde el momento
> que a la cuenta del usuario de crontab le llega algo.

A ver, creo que entendí mal la primera vez. Voy a decir lo que
entiendo que pasa, corrigeme si estoy mal.

1. Esta llamada está en el crontab del usuario A
2. MAILTO=B
3. B != A
4. A recibe un correo con el resultado de ejecutar exp <bla bla>
5. B recibe un correo vacío.

¿Todo bien?

Entonces lo que está pasando es que exp *no* está mandando mensajes
sobre la salida estándar, sino sobre el *error* estándar. Por eso el
 | mail -s "..." $MAILTO
no está recibiendo nada, pero cron sí está capturando algo.

En ese caso lo que tienes que hacer es redirigir el error estándar de
exp a la salida estándar, para que el | lo pueda tomar y darselo a
mail.

 exp <bla bla>  2>&1 | mail -s "..." $MAILTO

Suerte.

Attachment: signature.asc
Description: Digital signature


Reply to: