Concatenação de arquivos por condição [RESOLVIDO]

13. Re: Concatenação de arquivos por condição [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 05/01/2012 - 10:38h

Então eu achi que entendi, mas não entendi não.

Pelo que eu tinha entendido, se um ip estiver nos dois arquivos ai você grava a informação completa e se não estiver nos dois você não grava, certo?
O que não deu certo? Um IP aparece mais de uma vez em algum dos arquivos?



  


14. Re: Concatenação de arquivos por condição [RESOLVIDO]

Vinicius Miqueloti
Miqueloti

(usa Lubuntu)

Enviado em 05/01/2012 - 10:40h

Ainda tem outra questão para te ajudarem com a idéia que você não esclareceu, o que você fará com os dados de ips que não possuírem o MAC Address ou o nome de Usuário?

Eles apareceram no arquivo final somente com as informações que possuem ou no arquivo final só ficaram os registros que possuam tanto info de MAC Addess quanto de usuário?

Se isto fosse um bd seria uma molezinha de query, se for só uma vez que tu for realizar esta tarefa valeria até a pena fazer um script que realiza-se a migração destes arquivos de textos para registros em um bd e extrair o resultado desejado, mais como deve ser uma rotina esta sua necessidade, o ideal é tentarmos resolver isso com script mesmo.


15. Re: Concatenação de arquivos por condição [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 05/01/2012 - 10:47h

Miqueloti escreveu:

Ainda tem outra questão para te ajudarem com a idéia que você não esclareceu, o que você fará com os dados de ips que não possuírem o MAC Address ou o nome de Usuário?

Eles apareceram no arquivo final somente com as informações que possuem ou no arquivo final só ficaram os registros que possuam tanto info de MAC Addess quanto de usuário?

Se isto fosse um bd seria uma molezinha de query, se for só uma vez que tu for realizar esta tarefa valeria até a pena fazer um script que realiza-se a migração destes arquivos de textos para registros em um bd e extrair o resultado desejado, mais como deve ser uma rotina esta sua necessidade, o ideal é tentarmos resolver isso com script mesmo.


Na verdade, no final das contas, jogarei esses dados pra bd. Mas como sou mto noob em bd, nao sei fazer esse tipo de tratamento. Mas, se vc puder me ajudar, podemos tentar. heheh




16. Re: Concatenação de arquivos por condição [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 05/01/2012 - 10:49h

fdmarp escreveu:

Então eu achi que entendi, mas não entendi não.

Pelo que eu tinha entendido, se um ip estiver nos dois arquivos ai você grava a informação completa e se não estiver nos dois você não grava, certo?
O que não deu certo? Um IP aparece mais de uma vez em algum dos arquivos?


Não bate o usuario com ip e mac. Faça um teste colocando mais duas linhas no arquivo1 que nao tenha no arquivo2.




17. Re: Concatenação de arquivos por condição [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 05/01/2012 - 10:57h

A minha idéia é fazer uma espécie de inventário automático.

- Primeiro eu puxo os MAC e seus respectivos IPs pelo nmap: arquivo1 (Sempre terá mais registros que o arquivo2 pois ele pega todos os dispositivos de rede que estão online.)
- Tenho um servidor xmpp, dai eu consigo puxar o registro de todos os IP usados pelos usuários: arquivo2

Os IPs que tiverem usuários, juntar com os dados do arquivo1: ip mac usuario; Os que não tiverem, deixar vazio, e, assim que a condição for estabelecida, preencher a coluna vazia.

Não sei se ficou confuso, mas a ideia é essa. Como eu disse, como sou noob em bd, pensei em fazer o tratamento todo no shell e passar o resultado final pro bd.

E sim, é uma rotina que deve ser realizada ao menos a cada hora.



18. Re: Concatenação de arquivos por condição [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 05/01/2012 - 11:21h

Marcelo Guatura escreveu:

pronto ta aqui o script que voce ta precisando, da uma olhada se atende realmente a sua necessidade.

ele funciona independente da quantidade de linhas que o arquivo tenha e ira criar um novo arquivo da maneira que voce especificou na postagem, qualquer duvida so postar ai.

E se tiver tudo certo altera para resolvido.

#!/bin/ksh
rm -f arquivo3.txt
touch arquivo3.txt

arquivo1=`cat arquivo1.txt | wc -l`

while [ $arquivo1 -gt 0 ] ; do

linha=`cat arquivo1.txt | head -$arquivo1 | tail -1`
guarda=$linha
ip_arq1=`echo $linha | awk '{print $1}'`

arquivo2=`cat arquivo2.txt | wc -l`

while [ $arquivo2 -gt 0 ] ; do

linha2=`cat arquivo2.txt | head -$arquivo2 | tail -1`
guarda2=$linha2
ip_arq2=`echo $linha2 | awk '{print $1}'`

if [ $ip_arq1 = $ip_arq2 ] ; then
guarda3=`echo $guarda2 | awk '{print $2}'`
echo "$guarda $guarda3" > arquivo3.txt
fi

arquivo2=`echo "$arquivo2-1" | bc`
done

arquivo1=`echo "$arquivo1-1" | bc`

done



GENIAL! FUNCIONOU PERFEITAMENTE! THANKS THANKS THANKS! SEM PALAVRAS! HEHEH

Obrigado também a todos que responderam, que ajudaram bastante também. =)



19. Re: Concatenação de arquivos por condição [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 05/01/2012 - 12:27h

@Marcelo Guatura

Desculpe incomodar novamente hehe...

Mas pensando mais um pouco, o arquivo1 sempre terá mais registros que o arquivo2, por ser feito com o nmap, ele pega dispositivos como impressora e APS, o que, obviamente, não tem usuário.

Esse script, gera um arquivo com elementos comum do arquivo1 e arquivo2 e exclui os que nao são comuns, como ficaria para criar um arquivo final mantendo todos os registros do arquivo1 e os comuns do arquivo 2. Ex:

arquivo1:

192.168.0.1 AA:AA:AA:AA:AA:AB
192.168.0.2 AA:AA:AA:AA:AA:AC
192.168.0.3 AA:AA:AA:AA:AA:AD
192.168.0.5 AA:AA:AA:AA:AA:AE

arquivo2:

192.168.0.1 usuario1
192.168.0.2 usuario2
192.168.0.4 usuario3
192.168.0.6 usuario4

ao invés de gerar como o script ta fazendo:

192.168.0.1 AA:AA:AA:AA:AA:AB usuario1
192.168.0.2 AA:AA:AA:AA:AA:AC usuario2

gerar:

arquivo3:

192.168.0.1 AA:AA:AA:AA:AA:AB usuario1
192.168.0.2 AA:AA:AA:AA:AA:AC usuario2
192.168.0.3 AA:AA:AA:AA:AA:AD --
192.168.0.5 AA:AA:AA:AA:AA:AE --

Excluir somente os registros do arquivo2.

A intenção é jogar isso no DB e possibilitar a edição da coluna usuário.


20. Re: Concatenação de arquivos por condição [RESOLVIDO]

Vinicius Miqueloti
Miqueloti

(usa Lubuntu)

Enviado em 10/01/2012 - 17:08h

Como você disse que irá trabalhar estes dados com BD, você pode passar esta tarefa para ele da seguinte forma, suponha que o seu arquivo1 seja a tabela1, e que o seu arquivo 2 seja a tabela2, a query (em mysql) para gerar o resultado que você deseja seria esta:

--------------------------------------
tabela1
id ip mac
1 192.168.0.1 AA:AA:AA:AA:AA:AB
2 192.168.0.2 AA:AA:AA:AA:AA:AC
3 192.168.0.3 AA:AA:AA:AA:AA:AD
4 192.168.0.5 AA:AA:AA:AA:AA:AE
--------------------------------------
tabela2
id ip user
1 192.168.0.1 usuario1
2 192.168.0.2 usuario2
3 192.168.0.4 usuario3
4 192.168.0.6 usuario4
--------------------------------------
query a ser executada:

SELECT t1.ip, t1.mac, t2.user
FROM tabela1 as t1
LEFT JOIN tabela2 as t2
ON t1.ip = t2.ip
--------------------------------------
Resultado:

ip mac user
192.168.0.1 AA:AA:AA:AA:AA:AB usuario1
192.168.0.2 AA:AA:AA:AA:AA:AC usuario2
192.168.0.3 AA:AA:AA:AA:AA:AD NULL
192.168.0.5 AA:AA:AA:AA:AA:AE NULL
--------------------------------------

Com o resultado da query vc trabalha da forma como melhor preferir para efetuar a correção aos resultados NULL de user.

Qualquer coisa é só falar!





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts