Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

1. Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 19/11/2013 - 20:05h

Pessoal ... Boa Noite

Preciso de uma ajuda ..

estou criando um script que verifica se o arquivo foi modificado em um determinado diretorio.

Caso exista o arquivo e o mesmo não foi modificado nos ultimos 30 minutos, mandar email.

Eu queria fazer uma unica script para verificar em diversos diretorios declarados em variaveis.

Existe algum comando que faça uma variavel entrar na condiçao e após ir para outra ?


EXEMPLO:

VAR1=/diretorio1/entrada/
VAR2=/diretorio2/entrada/
VAR3=/diretorio3/entrada/

Precisaria de uma condição para verificar dentro desses diretórios se existe arquivo, caso exista verificar quanto tempo esta parado la.

se for maior que 30 minutos, mandar um email.

saindo da condição, entrar em outra variavel e fazer o mesmo procedimento

Abraços
Arthur


  


2. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Bruno Rogério Fernandes
brunorf

(usa Arch Linux)

Enviado em 19/11/2013 - 20:25h

Você pode declarar uma única variável, com os diretórios separados por espaço, ou qualquer outro caracter (mas neste caso, complicaria mais), daí basta usar um for:



DIRETORIOS="/opt /tmp /var"

for DIR in $DIRETORIOS
do
#rotina
done



Só não vai funcionar se os diretorios tiverem espaços no nome, daí teria que dar uma trabalhada no código acima.


3. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 19/11/2013 - 21:36h

brunorf escreveu:

Você pode declarar uma única variável, com os diretórios separados por espaço, ou qualquer outro caracter (mas neste caso, complicaria mais), daí basta usar um for:



DIRETORIOS="/opt /tmp /var"

for DIR in $DIRETORIOS
do
#rotina
done



Só não vai funcionar se os diretorios tiverem espaços no nome, daí teria que dar uma trabalhada no código acima.



Funcionou sim ... juntei com comando if e o mesmo entrou em todos os diretorios e saiu.

Agora preciso pensar em como comparar a data do arquivo com a do sistema;

Consegui com o comando date -r $arquivo +%R pegar a hora do arquivo..

Agora estou tentando achar um jeito de comparar com a hora do sistema.

Tem alguma ideia ?

Valeu pela força

Abraços


4. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 19/11/2013 - 22:04h

acoscarelli escreveu:

brunorf escreveu:

Você pode declarar uma única variável, com os diretórios separados por espaço, ou qualquer outro caracter (mas neste caso, complicaria mais), daí basta usar um for:



DIRETORIOS="/opt /tmp /var"

for DIR in $DIRETORIOS
do
#rotina
done



Só não vai funcionar se os diretorios tiverem espaços no nome, daí teria que dar uma trabalhada no código acima.



Funcionou sim ... juntei com comando if e o mesmo entrou em todos os diretorios e saiu.

Agora preciso pensar em como comparar a data do arquivo com a do sistema;

Consegui com o comando date -r $arquivo +%R pegar a hora do arquivo..

Agora estou tentando achar um jeito de comparar com a hora do sistema.

Tem alguma ideia ?

Valeu pela força

Abraços


Pode usar o find + Xargs ex:


find /caminho --maxdepth 1 -type f -mmin -10 | xargs sendmail


-mmin -10 data do arquivo for menor que 10 minutos



5. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 20/11/2013 - 07:41h

andrecanhadas escreveu:

acoscarelli escreveu:

brunorf escreveu:

Você pode declarar uma única variável, com os diretórios separados por espaço, ou qualquer outro caracter (mas neste caso, complicaria mais), daí basta usar um for:



DIRETORIOS="/opt /tmp /var"

for DIR in $DIRETORIOS
do
#rotina
done



Só não vai funcionar se os diretorios tiverem espaços no nome, daí teria que dar uma trabalhada no código acima.



Funcionou sim ... juntei com comando if e o mesmo entrou em todos os diretorios e saiu.

Agora preciso pensar em como comparar a data do arquivo com a do sistema;

Consegui com o comando date -r $arquivo +%R pegar a hora do arquivo..

Agora estou tentando achar um jeito de comparar com a hora do sistema.

Tem alguma ideia ?

Valeu pela força

Abraços


Pode usar o find + Xargs ex:


find /caminho --maxdepth 1 -type f -mmin -10 | xargs sendmail


-mmin -10 data do arquivo for menor que 10 minutos



Tamo chegando la .. hahahahaha

Eu fiz alteração e serviu para mim esse comando desta forma - find $VAR -type f -mmin -30

agora eu precisaria colocar isso dentro de um IF para ter a condição

Se existir o arquivo sem modificar nos ultimos 30 minutos ... mandar email.

Tendeu ?

Valeu pela força

Abraçao


6. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 22/11/2013 - 12:05h

Veja se resolve:


#!/bin/bash

find /caminho -maxdepth 1 -type f -mmin -30 | grep -v $0 | while read line
do

if [ $? -eq 0 ]; then

echo "Enviar e-mail do arquivo $line"


fi

done


No lugar do echo "Enviar e-mail do arquivo $line", você insere o comando do sendmail.


7. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 22/11/2013 - 13:26h

alexandregms escreveu:

Veja se resolve:


#!/bin/bash

find /caminho -maxdepth 1 -type f -mmin -30 | grep -v $0 | while read line
do

if [ $? -eq 0 ]; then

echo "Enviar e-mail do arquivo $line"


fi

done


No lugar do echo "Enviar e-mail do arquivo $line", você insere o comando do sendmail.


Ele da um erro no grep -v ... Não consegui compreender bem para alterar ...

A respeito do listar os arquivos, esse comando funcionou find *.zip -mmin +30 ....

Agora vou tentar incrementar o if que voce me passou junto com sendemail.

Só estou na duvida do porque o grep nao ter funcionado.

Valeu pela otima dica

Abraçao


8. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 22/11/2013 - 13:30h

alexandregms escreveu:

Veja se resolve:


#!/bin/bash

find /caminho -maxdepth 1 -type f -mmin -30 | grep -v $0 | while read line
do

if [ $? -eq 0 ]; then

echo "Enviar e-mail do arquivo $line"


fi

done


No lugar do echo "Enviar e-mail do arquivo $line", você insere o comando do sendmail.



Na verdade precisaria colocar esse comando find *.zip -mmin +30 dentro do if ..

Qual seria a maneira correta ?

Um exemplo, poderia fazer assim sendo que o exec eu colocaria o send email ? find *.zip -mmin +30 -exec ls -o '{}' \;


9. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

William da Costa Canin
willnux

(usa Fedora)

Enviado em 22/11/2013 - 23:59h

Tae companheiro, uma sugestão.




#!/bin/sh

DIR=/home/`logname`
DIR2=/etc

if [ "$( ls -A $DIR $DIR2 )" ]; then(

ls $DIR
ls $DIR2 )

else(

echo "vazios")

fi







10. Re: Verificar Arquivo em Diversos Diretorios [RESOLVIDO]

Arthur Coscarelli
acoscarelli

(usa Ubuntu)

Enviado em 27/11/2013 - 19:48h

willnux escreveu:

Tae companheiro, uma sugestão.




#!/bin/sh

DIR=/home/`logname`
DIR2=/etc

if [ "$( ls -A $DIR $DIR2 )" ]; then(

ls $DIR
ls $DIR2 )

else(

echo "vazios")

fi






Seria basicamente isso ... Agora como fazer a sintaxe do if

EXEMPLO:

if [ find *.zip -mmin +30 ]; then
mailx -s

Tendeu?

Se existe arquivo no diretorio e esse estiver la a mais de 30 minutos mande o email

Caso contrario nao faça nada .. fica no loop ...

To empacado nessa questao







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts