Estou tentando recuperar todas as linhas com endereços IP de arquivos dentro de diretórios chamados log
e gravá-los em um arquivo, mas não estou tendo muita sorte. No momento estou digitando:
find . -path "*/log/*" -type f | xargs grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | xargs grep -v "[myip]" > log.txt | sort -u
Mas isso apenas gera o seguinte:
Binary file ./var/log/wtmp.1 matches
Binary file ./var/log/lastlog matches
Binary file ./var/log/btmp matches
Binary file ./var/log/btmp.1 matches
Binary file ./var/log/wtmp matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-00000000000334f4-000547883cd64bfc.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-000000000003109b-000547834461e9ac.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-000000000002ec72-0005477e385a43c7.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-000000000002c42c-0005477bb1a39b46.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-0000000000029d35-00054776e06fb915.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-0000000000027310-000547743bc488ca.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-0000000000024a25-00054771307a13d2.journal matches
Binary file ./run/log/journal/9dec9e4e32834bb59a2d5e1c50895ca5/system@4d01f718aa76471eafb1b2faa76e05e2-0000000000022116-0005476e66afb18c.journal matches
Qual não é o que eu estou procurando? Alguém poderia me ajudar a escrever esta consulta corretamente? Idealmente, a saída deve ser algo como isto:
Started GET "/" for [IP] at 2017-02-02 19:15:39 +0000
Cannot render console from 85.248.227.164! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
[...]
Jan 29 06:25:04 ubuntu sshd[24085]: Failed password for root from [IP] port 41348 ssh2
E assim por diante, excluindo meu endereço IP e quaisquer resultados relacionados. Idealmente, com o caminho do arquivo e o número da linha anexados a cada partida.
find . -path "*/log/*" -type f | exec grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" {} > log.txt
Não imprime nada no arquivo de log. Parte do problema parece estar nos processos adicionais, como
find . -path "*/log/*" -type f | xargs grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" > log.txt
Faz saída de endereços IP, apenas obtém muitas coisas duplicadas e muitos resultados com o meu IP, o que eu não quero.