Shell script não funciona direito no crontab [RESOLVIDO]

1. Shell script não funciona direito no crontab [RESOLVIDO]

Rodrigo Paschoalini
rodpas

(usa Debian)

Enviado em 30/07/2012 - 10:08h

Amigos,
Bom Dia !
O shell abaixo, funciona TUDO normalmente se rodar de forma manual (aparece assunto e mensagem quando recebo e_mail),o problema é se deixar agendado pelo crontab não aparece nem o assunto e nem a mensagem nos e_mail´s.


#!/bin/bash

INICIO=`date +%d/%m/%Y-%H:%M:%S`
LOG=/var/log/`date +%Y-%m-%d`nome-do-arquivo-log.txt

echo " " >> $LOG
echo " " >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " Sincronização iniciada em $INICIO" >> $LOG


rsync -avz /root/nfe (IP)::raiz/ >> $LOG
FINAL=`date +%d/%m/%Y-%H:%M:%S`


echo " Sincronização Finalizada em $FINAL" >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " " >> $LOG
echo " " >> $LOG


# Envia e_mail
#
EMAIL_FROM="meuemail@dominio.com.br" # usuario de email que se autentica no servidor SMTP
EMAIL_TO="meuemail@dominio.com.br" # usuarios que receberao emails (separados por ;)

#Servidor SMTP e porta utilizada
SMTP_USER="meuemail@empresa.com.br"
SERVIDOR_SMTP="meuservidor:25" #endere~C§no servidor SMTP
SENHA=***** #informe aqui a senha de autentica~C§ no servidor SMTP

ASSUNTO="$HOSTNAME - $1"
MENSAGEM=$2

if [ "$1" == "" ] ;then
ASSUNTO="ASSUNTO"
fi
if [ "$2" == "" ] ;then
MENSAGEM="MENSAGEM"
fi
if [ "$3" != "" ] ;then
MENSAGEM="$2 `cat $3`"
fi



sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "$ASSUNTO" -m "$MENSAGEM" -s $SERVIDOR_SMTP -xu $SMTP_USER -xp $SENHA

Obrigado!
Abraço!


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 03/08/2012 - 00:33h

Eu mudaria isso:


if [ "$1" == "" ] ;then
ASSUNTO="ASSUNTO"
fi
if [ "$2" == "" ] ;then
MENSAGEM="MENSAGEM"
fi
if [ "$3" != "" ] ;then
MENSAGEM="$2 `cat $3`"
fi


Por isso:


[ "$1" ] || ASSUNTO="ASSUNTO"
[ "$2" ] || MENSAGEM="MENSAGEM"
[ "$3" ] && MENSAGEM="$2 `cat $3`"


Se queres adicionar à mensagem o conteúdo logue que está guardando em $LOG, mas adicionar à mensagem no final..


MENSAGEM="$MENSAGEM
================
CONTEUDO DO LOG
=================
$(cat $LOG)"


3. Re: Shell script não funciona direito no crontab [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 30/07/2012 - 11:08h

Você esta passando o conteúdo do e-mail via parametros para o script

ASSUNTO="$HOSTNAME - $1"
MENSAGEM=$2

if [ "$1" == "" ] ;then
ASSUNTO="ASSUNTO"
fi
if [ "$2" == "" ] ;then
MENSAGEM="MENSAGEM"
fi
if [ "$3" != "" ] ;then


Provavelmente tá fazendo assim:

script.sh 'teste' arquivoComMensagem.txt

Então, o problema é que ao fazer isso via crontab, precisa fornecer o caminho completo do arquivo, ficando:


* * * * * script.sh 'teste' /home/teste/arquivoComMensagem.txt


É isso?


4. Re: Shell script não funciona direito no crontab [RESOLVIDO]

Rodrigo Paschoalini
rodpas

(usa Debian)

Enviado em 30/07/2012 - 15:10h

Meu crontab está da seguinte maneira.

00 06 * * * root /home/script/arquivo.sh



Abraço!


5. Caminho

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 30/07/2012 - 15:47h

Tente colocar os caminhos completos no seu arquivo.sh:

/usr/bin/rsync
/usr/sbin/sendmail

Geralmente da problemas em scripts no cron o próprio iptables precisa passar o caminho completo quando rodo o firewall pelo cron.


6. Re: Shell script não funciona direito no crontab [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 31/07/2012 - 00:29h

rodpas escreveu:

Meu crontab está da seguinte maneira.

00 06 * * * root /home/script/arquivo.sh



Abraço!


Se está usando assim, em que momento passa os parâmetros que o script usa??????


if [ "$1" == "" ] ;then
ASSUNTO="ASSUNTO"
fi
if [ "$2" == "" ] ;then
MENSAGEM="MENSAGEM"
fi
if [ "$3" != "" ] ;then



7. Re: Shell script não funciona direito no crontab [RESOLVIDO]

Rodrigo Paschoalini
rodpas

(usa Debian)

Enviado em 01/08/2012 - 14:29h

Ainda funciona porem somente quando executado pelo crontab da forma como passei no e_mail que recebo ele ainda não traz o "ASSUNTO E NEM A MENSAGEM"....gostaria de acrescentar o conteudo que gero no log dentro do e_mail tambem.

Abraço!


8. Re: Shell script não funciona direito no crontab [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 01/08/2012 - 15:16h

rodpas escreveu:

Ainda funciona porem somente quando executado pelo crontab da forma como passei no e_mail que recebo ele ainda não traz o "ASSUNTO E NEM A MENSAGEM"....gostaria de acrescentar o conteudo que gero no log dentro do e_mail tambem.

Abraço!


Reforçando mais uma vez: - Em que momento você passa os parâmetros $1 $2 e $3? Se não passar valor nenhum as mensagens ficam varias mesmo



if [ "$1" == "" ] ;then
ASSUNTO="ASSUNTO" # SE NADA FOR PASSADO VAI FICAR como ASSUNTO
fi
if [ "$2" == "" ] ;then
MENSAGEM="MENSAGEM" # SE NADA FOR PASSADO VAI FICAR como MENSAGEM
fi
if [ "$3" != "" ] ;then
MENSAGEM="$2 `cat $3`" # SE NADA FOR PASSADO VAI FICAR como MENSAGEM
fi



9. Re: Shell script não funciona direito no crontab [RESOLVIDO]

Rodrigo Paschoalini
rodpas

(usa Debian)

Enviado em 01/08/2012 - 15:33h

Eu altero no proprio script, é que agora está como "ASSUNTO" E "MENSAGEM" somente para simbolizar, mas se rodo esse script manual ele funciona tudo...(log/rsync/email com "ASSUNTO E MENSAGEM QUE DEIXEI PREVIAMENTE JÁ ESCRITO NO SCRIPT) o problema somente está acontecendo é se agendo o horário no crontab e_mail que eu recebo ele vem sem o assunto e a mensagem...."!

PS:gostaria de acrescentar o meu log nesse e_mail tambem.

PS2: Caso tenham alguma ideia de mudança para melhorar isso aceito sugestões!!!

Abraço!
Obrigado a Todos que Ajudaram!


10. Re: Shell script não funciona direito no crontab [RESOLVIDO]

Rodrigo Paschoalini
rodpas

(usa Debian)

Enviado em 03/08/2012 - 12:15h

Muito Obrigado a todos que ajudaram a dica do rai3mb consegui resolver o problema muito obrigado!

Abraço!





11. Re: Shell script não funciona direito no crontab [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 03/08/2012 - 16:00h

rodpas escreveu:

Muito Obrigado a todos que ajudaram a dica do rai3mb consegui resolver o problema muito obrigado!

Abraço!




Marque a resposta que resolveu seu problema como a melhor resposta para ajudar outros com a mesma duvida.
Abraço.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts