Crontab não executa script SARG [RESOLVIDO]

1. Crontab não executa script SARG [RESOLVIDO]

VICTOR FELIPE DOLCE CARDOSO
felipedc

(usa Debian)

Enviado em 21/09/2011 - 09:19h

Bom Dia pessoal, estou com um problema ao gerar relatórios do sarg pelo crontab,
Eu até imagino já qual seja o problema, porém não consegui resolver de forma alguma..
Já pesquisei muito tanto dentro, quanto fora do VOL mas não consegui resolver (ou ao menos
uma resposta para oque eu quero fazer);

É o seguinte, criei um script para gerar o sarg diariamente, o script é o seguinte:

#!/bin/bash

HOJE=$(date --date "0 day ago" +%d/%m/%Y)
sarg -f /etc/sarg/sarg.conf -d $HOJE-$HOJE

localizado em /etc/sarg/sargdia.sh

Beleza, dei permissões de execução para ele:

chmod +x /etc/sarg/sargdia.sh
-rwxrwxrwx 1 root root 99 Set 21 09:14 sargdia.sh


Executei ele manualmente:
/etc/sarg/sargdia.sh

E gerou o relatório:
SARG: Records in file: 109268, reading: 100,00%
SARG: Period covered by log files: 21/09/2011-21/09/2011

Aqui eu imagino que esteja o problema, o crontab não aceita scripts que retornam mensagens como resposta, no caso um simples echo dentro do arquivo já seria motivo para o crontab não executa-lo, certo?

Porém, não consegui localizar onde 'retiro' essas mensagens p/ tirar esta minha dúvida, se é realmente
pelo script estar gerando estas mensagens que o crontab não o executa.

Alguem poderia me ajudar?

Segue abaixo meu sarg.conf

# TAG: Linguagem
#language Portuguese

# TAG: Caminho para o arquivo Access.log
access_log /var/log/squid/access.log

# TAG: Graficos
graphs yes
graph_days_bytes_bar_color green

# TAG: Relatorios
title "[Relatório de Acessos a Internet]"

# TAG: Visual
font_face Arial
header_color #666666
header_bgcolor #EEEEEE
header_font_size 9px
title_font_size 11px
background_color #FFFFFF
text_color #666666
text_bgcolor #FFFFFF
title_color #009999

# TAG: Temporarios
temporary_dir /tmp

# TAG: Diretorio (Modifique de acordo com sua necessidade)
output_dir /var/www/sarg/dia

# TAG: Top Users
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse

# TAG: URL Exclusao do Relatorio
exclude_hosts /etc/sarg/exclude_hosts

# TAG: Filtragem de Strings
#exclude_string /etc/sarg/exclude_strings

# TAG: Filtragem de Usuarios
exclude_users /etc/sarg/exclude_users

# TAG: Formato de Data
date_format e

# TAG: Limite de Logs [0 = Sem limites]
lastlog 0

# TAG: Mostrar IP
user_ip no

# TAG: Mostrar Usuario
#usertab /etc/squid/sarg.usertab

# TAG: Gerando Relatario
remove_temp_files yes
index yes
overwrite_report yes
records_without_userid ignore
use_comma no
topsites_num 100
topsites_sort_order BYTES D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
#report_typie topsites users_sites sites_users date_time denied auth_failures site_user_time_date
long_url no
show_successful_message no
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0 download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"



Desculpem se a pergunta for besta, mas realmente ja estou a alguns dias tentando resolver este problema e só hoje cheguei a esta reposta, que o crontab não executa o script talvez por ele emitir essas mensagens de 'sucesso' ao gerar os relatorios.

Muitissimo Obrigado


  


2. MELHOR RESPOSTA

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 26/09/2011 - 13:52h

Quanto ao meu post anterior, me atrapalhei um pouco e acabei ensinando errado, mas espero que você tenha entendido, ou entenda agora

Quando disse pra você criar um arquivo e colocar dentro dele o comando que chama seu atual script, acabei por enrolar e não expliquei direito.

Você deve criar um arquivo contendo o código abaixo com um nome diferente do seu atual script. Para efeito de exemplo vamos chamá-lo de sargcron.sh

#!/bin/sh
/etc/sarg/sargdia.sh


Depois de adicionar permissão de execução adiciona ao crontab o sargcron.sh

Observe que tiramos o &1, deixando da seguinte forma

30 23 * * * /etc/sarg/sargcron.sh 2> /dev/null



Quanto aos logs do crontab você os encontra na pasta /var/log


Para garantir que você edita o crontab como root, use o comando como root ou através do sudo

crontab -e


Acredito não ser problemas com permissões, senão não teria funcionado quando você rodou o comando manualmente


4. Re: Crontab não executa script SARG [RESOLVIDO]

VICTOR FELIPE DOLCE CARDOSO
felipedc

(usa Debian)

Enviado em 21/09/2011 - 13:12h



n4t4n, obrigado amigo!
mas como eu disse, fiz várias pesquisas tanto dentro do forum quanto fora,
inclussive já tinha visitado os tópicos sugeridos, o problema é que
meu relatorio do sarg, ao ser gerado ele emite algumas 'mensagens',
e eu gostaria de saber como remove-las, verifiquei no .conf do sarg
e encontrei a linha de comando: show_successful_message yes, alterei para 'no'
mas mesmo assim ele ainda gera algumas mensagens que eu tenho quase certeza
que não esta executando o script por causa da mesma.

Mas agradeço desde já sua sugestão, mas minha pergunta ainda continua em aberto..

Obrigado



5. Re: Crontab não executa script SARG [RESOLVIDO]

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 21/09/2011 - 14:29h

Bom, nesse caso vou te recomendar uma gambiarra (eu acho).

Você cria uma arquivo, por exemplo sargdia.sh e adiciona o comando que executa o script dentro dele

#!/bin/sh
/etc/sarg/sargdia.sh


Adiciona permissão de execução nele e então adiciona no crontab o arquivo que você acabou de criar (sargdia.sh), redirecionando qualquer saída de erros para /dev/null

00 18 * * * /etc/sarg/sargdia.sh 2>&1 /dev/null


6. Re: Crontab não executa script SARG [RESOLVIDO]

VICTOR FELIPE DOLCE CARDOSO
felipedc

(usa Debian)

Enviado em 26/09/2011 - 10:20h

n4t4n escreveu:

Bom, nesse caso vou te recomendar uma gambiarra (eu acho).

Você cria uma arquivo, por exemplo sargdia.sh e adiciona o comando que executa o script dentro dele

#!/bin/sh
/etc/sarg/sargdia.sh


Adiciona permissão de execução nele e então adiciona no crontab o arquivo que você acabou de criar (sargdia.sh), redirecionando qualquer saída de erros para /dev/null

00 18 * * * /etc/sarg/sargdia.sh 2>&1 /dev/null



n4t4n, muito obrigado por estar me ajudando..
desculpe as vezes a demora a responder...
pois bem, fiz o sugerido e mesmo assim nao tive sucesso, gostaria de saber o seguinte.. aonde vejo os logs do crontab? tenho duvidas pois acho que ele nao esta sendo executado. nao somente meu script mas todos agendamentos `escritos` dentro dele.

segue abaixo algumas screenshots que talvez ajude.

meu crontab, localizado em /etc/crontab
http://img571.imageshack.us/img571/2654/crontab.jpg

permissoes de pasta do diretorio /etc/sarg
saida do script localizado em /etc/sarg/sargdia.sh
e o relatorio gerado dentro da pasta /var/www/sarg/relatorios
http://img651.imageshack.us/img651/1783/permissoes.jpg



7. Re: Crontab não executa script SARG [RESOLVIDO]

VICTOR FELIPE DOLCE CARDOSO
felipedc

(usa Debian)

Enviado em 26/09/2011 - 14:16h

n4t4n escreveu:

Quanto ao meu post anterior, me atrapalhei um pouco e acabei ensinando errado, mas espero que você tenha entendido, ou entenda agora

Quando disse pra você criar um arquivo e colocar dentro dele o comando que chama seu atual script, acabei por enrolar e não expliquei direito.

Você deve criar um arquivo contendo o código abaixo com um nome diferente do seu atual script. Para efeito de exemplo vamos chamá-lo de sargcron.sh

#!/bin/sh
/etc/sarg/sargdia.sh


Depois de adicionar permissão de execução adiciona ao crontab o sargcron.sh

Observe que tiramos o &1, deixando da seguinte forma

30 23 * * * /etc/sarg/sargcron.sh 2> /dev/null



Quanto aos logs do crontab você os encontra na pasta /var/log


Para garantir que você edita o crontab como root, use o comando como root ou através do sudo

crontab -e


Acredito não ser problemas com permissões, senão não teria funcionado quando você rodou o comando manualmente


n4t4n, cara muito obrigado.. vc matou a charada ao usar a frase "Para garantir que você edita o crontab como root, use o comando como root ou através do sudo, use crontab -e"

Nao precisei fazer o macete de adicionar um novo script que roda-se o script que eu desejava.. bastou editar o crontab atraves do crontab -e e adicionar la o script sargdia.sh

Rodou belezinha agora, mais uma vez salvo pelo VOL e seus usuarios.

Muitissimo obrigado mesmo n4t4n, lhe devo uma cerveja haha..

Agora, queria entender qual a diferença entre editar o crontab atraves do nano /etc/crontab
e pelo crontab -e
nao é o mesmo script?

Independente de tudo, muito obrigado mesmo.. nao tenho como agradecer.. agora tenho os relatorios diarios!!

Valeu.




8. Re: Crontab não executa script SARG [RESOLVIDO]

Natanael Henrique
natanaelhenrique

(usa Arch Linux)

Enviado em 26/09/2011 - 16:30h

O que eu sei é que o crontab é executado separadamente para cada usuário do sistema.

Então difere você usar crontab -e como usuário comum e como root.

Ele invariavelmente vai editar o crontab porém com as permissões de cada usuário.

Por esse motivo se usa o termo "crontab do root" que é quando você edita o crontab como root para agendar tarefas que exigem permissão elevada no sistema.


9. Re: Crontab não executa script SARG [RESOLVIDO]

VICTOR FELIPE DOLCE CARDOSO
felipedc

(usa Debian)

Enviado em 26/09/2011 - 17:03h

Certo n4t4n, mas pela lógica.. como eu estou logado como root
ao acessar o arquivo /etc/crontab eu estaria acessando o arquivo do usuario root certo?
e mesmo assim, se editar o arquivo crontab definir usuario root para executar o arquivo, era
pra ele ter funcionado, nao é?
bom, independente de tudo que acontece.. mais uma vez agradeço muito na ajuda para resoluçao do meu problema, tu é 10.. valeu! :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts