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.
signature.asc
Description: Digital signature

