Script funciona no prompt mas não no crontab [RESOLVIDO]

1. Script funciona no prompt mas não no crontab [RESOLVIDO]

Kleber Rodrigues
klebersr

(usa Fedora)

Enviado em 13/11/2012 - 10:52h

Bom dia meus amigos!

Li diversos tópicos sobre o assunto, mas não encontrei nenhum que me ajudou em meu probleminha.

Tenho um script que verifica quantos emails tem parado na fila, e caso tenha mais de 200, ele deve, parar o postfix e enviar um email através de um servidor externo.

Então o script ficou assim:

#!/bin/bash
#getmailq.sh - written by Valec 2006. Steal and share.
#Get postfix queue lengths
#Place in /usr/local/bin/
#exec .1.3.6.1.4.1.2021.53.101.0 mailq /usr/local/bin/getmailq.sh
QUEUES="incoming active deferred hold corrupt"
for i in $QUEUES; do
COUNT=`qshape $i | grep TOTAL | awk '{print $2}'`
printf "$i:$COUNT \n"
if [ "$COUNT" -gt 2 ]; then
/etc/init.d/postfix stop
/usr/local/bin/sendEmail -f remetente@dominio.com.br -t destinatario1@dominio2.com -u "ATENCAO!! ESTOURO DE FILA NO SERVIDOR POSTFIX WEB" -m "VERIFICAR COM URGENCIA O SERVIDOR!!" -s mail.dominio.com.br:25 -xu remetente@dominio.com.br -xp passwd
fi
done


O script funciona perfeitamente no Shell mas não funciona nem com reza brava no crontab.

Alguém pode me ajudar?

Obrigado!



  


2. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 13/11/2012 - 11:23h

O usuário que vc testou diretamente no Shell é o mesmo que vc está executando via crontab ?



3. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Kleber Rodrigues
klebersr

(usa Fedora)

Enviado em 13/11/2012 - 11:25h

Sim.

Todos como root.

Obrigado,


4. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/11/2012 - 11:43h

Esse tipo de problema é comum quando se tentar usar um programa que precisa estar vinculado a um terminal, o que não é o caso de um comando que execute via cron.


5. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Kleber Rodrigues
klebersr

(usa Fedora)

Enviado em 13/11/2012 - 11:45h

Então Paulo, mas já adicionei um > /dev/tty1 no fim do arquivo e não adiantou, tem algo mais que posso fazer?

Obrigado!


6. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 13/11/2012 - 11:47h

Deixe a primeira linha do seu script desta forma: #!/bin/sh -x
e envie a saída para um log ( seu_script.sh >> /tmp/saida_script.log ), assim podemos ver onde está o erro.


7. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/11/2012 - 11:56h

Já tive um problema desses!
Ele executava certinho não mão. Via cron ele dava como executado no log, mas não executava as ordens. Reescrevi o código em php e problema resolvido!

Chamo no cron via lynx.

Ex:

*/5    *       *       *       *         root  lynx  http://server/intra/Module/public/shell01/teste 



8. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Kleber Rodrigues
klebersr

(usa Fedora)

Enviado em 13/11/2012 - 12:57h

Então Paulo, mas já adicionei um > /dev/tty1 no fim do arquivo e não adiantou, tem algo mais que posso fazer?

Obrigado!


9. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/11/2012 - 13:23h

Troque a primeira linha do script pelo seguinte bloco.

#!/bin/sh -xv
exec 2>/tmp/error_and_debug.log
exec 1>/tmp/normal_output.log
exec 0</dev/null


E depois examine os arquivos de saída.


10. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Kleber Rodrigues
klebersr

(usa Fedora)

Enviado em 13/11/2012 - 13:36h

É, parece que é algo relacionado com o path, veja um pedaço do retorno:

+ for i in '$QUEUES'
/usr/sbin/qshape $i | grep TOTAL | awk '{print $2}'
++ /usr/sbin/qshape incoming
++ grep TOTAL
++ awk '{print $2}'
/usr/sbin/qshape: Can't exec "postconf": No such file or directory at /usr/sbin/qshape line 172.
Usage: /usr/sbin/qshape [ -s ] [ -p ] [ -m <min_subdomains> ] [ -l ]
[ -b <bucket_count> ] [ -t <bucket_time> ] [ -w <terminal_width> ]
[ -N <batch_msg_count> ] [ -n <batch_top_domains> ]
[ -c <config_directory> ] [ <queue_name> ... ]
The 's' option shows sender domain counts.
The 'p' option shows address counts by for parent domains.
Parent domains are shown with a leading '.' before the domain name.
Parent domains are only shown if the the domain is not a TLD, and at
least <min_subdomains> (default 5) subdomains are shown in the output.


Parece que, primeiro, ele não encontrou o comando postconf, porém vi que ele está em /usr/sbin e este caminho está no PATH.




11. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/11/2012 - 13:48h

Tem certeza de que está no PATH? Por via das dúvidas, tente forçá-lo no script.


12. Re: Script funciona no prompt mas não no crontab [RESOLVIDO]

Kleber Rodrigues
klebersr

(usa Fedora)

Enviado em 13/11/2012 - 13:51h

Paulão, obrigado pela ajuda.

Tenho anos e anos de Linux, mas sou um verdadeiro noob quando o assunto é programação e shell script, como faço o que falou??

Abrigado! :P



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts