Script de monitoração [RESOLVIDO]

1. Script de monitoração [RESOLVIDO]

Leandro Lima
Minimex

(usa Outra)

Enviado em 06/02/2012 - 15:36h

Galera gostaria de fazer um script que monitore a data de modificação de um diretório.

O caso é o seguinte:

Um certo diretório recebe arquivos com uma freqüência x e a cada vez que isso acontece a data de modificação dele é atualizada. é o diretório "." no caso de um comando ls -ld.

Preciso que o script identifique se esse diretório não foi atualizado, ou seja, não recebeu arquivos a 2 horas a traz.

Tentei usando o find [diretório] -type d -mtime +x...
Porém o -mtime funciona em *24h e o comando -mmin não funciona na versão do sistema aqui.(Unix eu acho).

Não consegui usar o -mtime em horas usando 0.04 por exemplo.

Talvez uma forma de comparar a hora atual com a hora de atualização do diretório seja a solução, mas não sei como fazer em casos de 1:00 e 23:00 nessa caso 23:00 seria 2 horas atrás de 1:00, mas 23 é maior que 1.

Deve existir uma forma bem simples de fazer isso, porém eu não a conheço.

Ajudem por favor. Desde já agradeço.


  


2. Re: Script de monitoração [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/02/2012 - 16:04h

De qual forma vc utilizou o mmin?

Por exemplo, para buscar os arquivos modificados nos últimos 5 minutos: find . -mmin -5

Utilize sempre o tempo em minutos, no caso de 2 horas use: find . -mmin -120

Se for um dia use "1440", 2 dias "2880" e assim por diante..



3. Re: Script de monitoração [RESOLVIDO]

Leandro Lima
Minimex

(usa Outra)

Enviado em 06/02/2012 - 16:56h

alexandregms escreveu:

De qual forma vc utilizou o mmin?

Por exemplo, para buscar os arquivos modificados nos últimos 5 minutos: find . -mmin -5

Utilize sempre o tempo em minutos, no caso de 2 horas use: find . -mmin -120

Se for um dia use "1440", 2 dias "2880" e assim por diante..


veja abaixo:


find . -type d -mmin -120
find: bad option -mmin

O sistema aqui é Unix parece que o find não possui o -mmin ainda. Procurei no man do find e não fala nada sobre -mmin. Como é um servidor, não posso fazer atualizações e preciso descobrir uma forma de fazer esse script do jeito que se encontra aos recursos atualmente.


4. Re: Script de monitoração [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/02/2012 - 17:11h

Entendi, vc está utilizando o /bin/bash?
Caso não esteja, digite bash no terminal e tente usar este find, se não der podemos caçar outras formas..


5. Re: Script de monitoração [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/02/2012 - 17:17h

Se bem que não vai influenciar em nada, estou pesquisando outras formas aqui..


6. Re: Script de monitoração [RESOLVIDO]

Leandro Lima
Minimex

(usa Outra)

Enviado em 06/02/2012 - 17:35h

alexandregms escreveu:

Entendi, vc está utilizando o /bin/bash?
Caso não esteja, digite bash no terminal e tente usar este find, se não der podemos caçar outras formas..


Sim eu estava utilizando o bash. Resultado do comando uname = HP-UX.


7. Re: Script de monitoração [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 06/02/2012 - 18:03h

cara ... não sei se te atende ... ou se você acha gambiarra demais ... mas e se você colocasse um script assim pra rodar de 2 em duas horas.... ou colocando um sleep de 2 horas? ajuda?

find /home/ -newer /tmp/arquivo_de_controle -type f 2>>/dev/null
touch /tmp/arquivo_de_controle

no caso vc cria a cada 2 horas um arquivo de controle e compara a data com ele


8. Re: Script de monitoração [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/02/2012 - 18:37h

Peguei algumas idéias e bolei este script, ele vai captar os arquivos modificados nas últimas 2 horas.

Veja se da certo:



#!/usr/bin/ksh

HOJE=`date +"%b %e"`
CUR_HORA=`date +%H`
let CUR_MIN=`date +%M`
let CUR_TIME=$CUR_HORA*60+$CUR_MIN
ls -l | grep "$HOJE" | grep ":" > file1

while read tempo
do

echo $tempo | cut -d" " -f8 > file2
HORA=`cut -d: -f1 file2`
MINUTO=`cut -d: -f2 file2`

let LMT=$HORA*60+$MINUTO
let DIFF=$CUR_TIME-$LMT
if [ "$DIFF" -lt 120 ]; then

echo $tempo

fi

done < file1

rm -f file*






9. Re: Script de monitoração [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 06/02/2012 - 19:17h

alexandregms ... cara eu nunca tinha utilizado o let pra calcular coisas....
fiz um testezinho de performance ... e foi o melhor desempenho ...
nossa valeu a dica viu!!!



10. Re: Script de monitoração [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 07/02/2012 - 05:04h

Leia este texto que contém um script que executa auditoria em arquivos tirados de uma lista txt em sistemas onde o comando find não exista ou não funcione adequadamente.

http://sekysu.blogspot.com/2010/09/shell-script-para-auditoria-de-arquivos.html

Boa sorte!


11. Deu certo.

Leandro Lima
Minimex

(usa Outra)

Enviado em 07/02/2012 - 17:06h

Bom galera obrigado a todos por ajudar, achei uma solução. Até bastante simples.

Se comparado com a solução do Alexandre ficou até parecido.

Na verdade percebi que era melhor monitorar atualizações de 1h e não de 2h. Visto isso:

Vi que já que se tratava de hora, achei melhor desconsiderar Minutos e Segundos.

# Data de atualização do diretório
DATA_DIR=`ls -ld $DIR | awk '{print $6 , $7 , $8}' | cut -c1-08`
Resultado do comando acima: Feb 7 15

# Data Atual do Sistema
DATA_ATU=`date | awk '{print $2 , $3 , $4}' | cut -c1-09`
Resultado do comando acima: Feb 7 15

Adicionado os 2 valores a suas respectivas variáveis só precisei de um IF:

# Se o valor das variáveis for diferente, então...
if [ "$DATA_DIR" != "$DATA_ATU" ] ; then


Com isso resolve o problema pois realmente só irá mudar o valor hora se o diretório realmente não for atualizado neste prazo. Não sei se minha explicação ficou boa, mas acho que dá pra entender a lógica, caso contrário perguntem posso detalhar mais.

Novamente, Obrigado a todos.




12. Re: Script de monitoração [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 07/02/2012 - 17:26h

O importante é dar certo, não importa como. Claro que as vezes temos que apelar pra POG .. hehe :-). Se deu certo marque o tópico como resolvido!

@fdmarp não tem o porque agradecer, pois vc ja quebrou alguns galhos pra mim! Eu que lhe devo agradecimentos! :-)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts