Log de arquivos - URGENTE

1. Log de arquivos - URGENTE

william
willspbr

(usa Ubuntu)

Enviado em 20/12/2011 - 09:08h

Preciso de uma shell que varra o diretório e crie uma lista com os arquivos desse diretório para que seja possivel construir uma rotina que verifique quais arquivos foram adicionados ou removidos do diretório.

Alguem pode me ajudar?


  


2. Re: Log de arquivos - URGENTE

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 20/12/2011 - 09:12h

pode usar o find
e redirecionando para um arquivo de log
exemplo
#find / opcão >> /var/log/log.txt

espero que ajude
de uma pesquisda na sessão de scripts




3. ola

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 20/12/2011 - 10:36h

então cara, pelo o que eu intendi vc quer monitorar um diretório né?

da pra fazer isso de um bocado de jeito diferente...
um jeito simples é assim:
primeiro vc faz uma lista do que tem dentro do diretorio.

$ ls > lista.txt

depois vc far um script de verificação com base na lista assim:

#!/bin/bash
for ((;;));do
while read linha;do
[ -e $linha ] && echo "arquivo $linha ok" || echo "arquivo $linha deletado"
done < lista.txt
sleep 1
done


certo... essa foi só uma ideia... agora se vc quer saber se o aquivo foi modificado, recomendo o uso do md5sum
primeiro eu tiraria a chave de todos os arquivos assim:

md5sum * > lista.md5


o arquivo terá esse formato:

fff1b02b7467d7b282ea5d9bff8565f4 enderecos.txt
d73826a945f40046ece4a099d2bb9f7b erro.sh
16fae94e57fafd232c6e095b6ff472a7 erro.txt
feba8731ab8627f986099b464a3ebf49 hosts.list


e depois eu faria um script que checaria os arquivos assim:

#!/bin/bash
while true; do
md5sum -c lista.md5 ; sleep 5 ; clear
done

a saida do comando é algo parecido com isso

enderecos.txt: SUCESSO
erro.sh: SUCESSO
erro.txt: FALHOU
hosts.list: SUCESSO

se tiver algum arquivo que falho no teste significa que ele foi modificado.

e por fim... vc verifica se alguém add algum arquivo novo no diretório dessa forma:

#!/bin/bash
for i in `ls`;do
cat lista.txt | grep -x $i
[ $? -ne 0 ] || echo "$i - aquivo novo"
done

e por ao vai...

bom é isso, como te disse essas foram só ideias, com base nisso vc inventa oque for melhor pra vc... falowww


4. Re: Log de arquivos - URGENTE

william
willspbr

(usa Ubuntu)

Enviado em 20/12/2011 - 16:41h

Eu não consegui implementar essa parte da verificação.

Eu queria armazenar os dois "estados" em um arquivo e comparar os dois. Se alguem puder me ajudar


5. Re: Log de arquivos - URGENTE

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 20/12/2011 - 17:56h

talvez fosse mais facil guardar em 2 arquivos e fazer um diff.

diff arq1 arq2

agora se vc quiser mesmo um arquivo só faça um

sort | uniq -c

e peque aqueles que não possuem 2 linhas ... é uma idéia


6. Re: Log de arquivos - URGENTE

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 20/12/2011 - 17:58h

você poderia utilizar também o find com a opção mtime ... não ficaria melhor?



7. Re: Log de arquivos - URGENTE

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 21/12/2011 - 17:47h

bom, vc pode usar o mesmo aquivo do md5sum assim:


#!/bin/bash
for ((;;));do
while read linha;do
arq=`echo $linha | cut -d\" \" -f2`
[ -e $arq ] && echo "arquivo $arq ok" || echo "arquivo $arq deletado"
done < lista.md5
sleep 1
done



8. Re: Log de arquivos - URGENTE

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 21/12/2011 - 17:48h

E ai esta conseguindo ?

qualquer coisa estamos ai



9. Re: Log de arquivos - URGENTE

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 21/12/2011 - 19:25h

bom... acho que é isso

tire o md5 dos arquivos:


$ md5sum * > lista.md5


e por fim execute esse script

#!/bin/bash
md5sum -c lista.md5 > saida.txt
for ((;;));do
while read linha;do
arq=`echo $linha | cut -d: -f1`
if [ -e $arq ]; then
[ `echo $linha | cut -d: -f2` = " SUCESSO"] && echo "arquivo $arq ok" || echo "arquivo $arq foi modificado"
else
echo "arquivo $arq deletado"
fi
done < saida.txt
for i in `ls`;do
cat lista.txt | grep -x $i
[ $? -ne 0 ] || echo "$i - aquivo novo"
done
sleep 1
done


ele vai verificar se o arquivo foi modificado, ou deletado ou até mesmo se alguem add um arquivo novo no diretório
lembrando novamente que é só uma ideia... não pu de testes ve ai...


10. Re: Log de arquivos - URGENTE

william
willspbr

(usa Ubuntu)

Enviado em 22/12/2011 - 09:54h

#!/bin/bash
for ((;;));do
while read linha;do
[ -e $linha ] && echo "arquivo $linha ok" || echo "arquivo $linha deletado"
done < lista.txt
sleep 1
done


Seguinte, eu consegui usar esse para ver se algum foi deletado, mais não consegui implementar a parte do adicionado. Alguem pode me ajudar?


11. Re: Log de arquivos - URGENTE

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 22/12/2011 - 10:05h

tente assim:

#!/bin/bash
for i in `ls`;do
cat lista.txt | grep -x $i
[ $? -ne 0 ] || echo "$i - aquivo novo"
done


esse script vai dar um grep no arquivo 'lista.txt' e verificar se todos os arquivos conferem com os que estão na lista. os arquivos que nao estiverem na 'lista' são considerados arquivos novos, saco?


12. Re: Log de arquivos - URGENTE

william
willspbr

(usa Ubuntu)

Enviado em 22/12/2011 - 10:14h

Eu fiz isso e ele mostrou ./add.sh: linha 4: [: 1: esperado operador unário ...
Diversas vezes



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts