katzer
(usa Ubuntu)
Enviado em 15/03/2012 - 16:34h
Abaixo o exemplo de diretorio:
13032012105428.10.24.208.131.txt
13032012110951.10.24.208.130.txt
13032012111000.10.24.208.130.txt
13032012111008.10.24.208.140.txt
13032012112057.10.24.208.138.txt
13032012112435.10.24.208.138.txt
13032012115009.10.24.208.70.txt
13032012115237.10.24.208.70.txt
14032012085852.10.24.208.169.txt
14032012151957.10.24.208.169.txt
14032012151959.10.24.208.167.txt
15032012141956.10.24.208.177.txt
15032012141957.10.24.208.177.txt
15032012151956.10.24.208.170.txt
.....
um shell script fica "monitorando" o diretório constantemente, quando chegar um arquivo com ip já existente no diretorio ele deve fazer uma comparação de arquivos e gerar relatório
desejo comparar só os arquivos com ips iguais fiz assim
#capturo a quantidade de arquivos do diretorio de ip que nunca vai estar vazio
i=$(ls /diretorio_ips | cut -d. -f6 | uniq -c | awk '{print$1}')
while [ $i > 0 ]
do
for arquivoum in $(ls | cut -d. -f5,6 | uniq -d)
do
read arquivoum arquivodois <<< `ls | egrep "$arquivoum"`
diff -q $arquivoum $arquivodois 1>>/dev/null 2>>/dev/null
if [ "$?" -eq 0 ]; then
rm $arquivoum
else
diff -y $arquivoum $arquivonovodois > relatorio.txt
fi
done
done
OBS:tem um problema, parece que não entra no for, creio que minha idéia de rodar sem interrupção não deva ser assim
outro problema é com ips ex: 170 e 70, o comando "ls | cut -d. -f5,6 | uniq -d" lista apenas os ips duplicados, neste meu exemplo o ip 170 deveria ficar de fora na linha "read arquivoum arquivodois <<< `ls | egrep "$arquivoum"`", ou seja o comando ls | egrep "$arquivoum" lista também o ip 170 e como só tem um arquivo com ip 170 não preciso comparar