[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script-pt] Parser em log pflogfile
From: |
Blau Araujo |
Subject: |
Re: [shell-script-pt] Parser em log pflogfile |
Date: |
Thu, 11 Mar 2021 10:18:27 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 |
Salve, Marcelo!
Como você não respondeu na lista (acontece... hehehe), aqui vai a
explicação pra que todo mundo possa entender e opinar:
Primeira parte...
awk '$0~"pass in" && $0!~"icmp" { ... }' <(gzip -dc SEU_ARQUIVO)
Aqui estou mandando para o AWK as linhas expandidas pelo gzip atarvés de
uma substituição de processo, que resulta na abertura de um descritor
de arquivos para leitura cujo "conteúdo" é a saída dos comandos entre os
parêntesis:
<(gzip -dc SEU_ARQUIVO)
**Este deve ser o gargalo, e talvez o seu "gzcat/zcat |" antes do awk
seja mais interessante.**
Já a parte abaixo, é uma regra que manda o AWK processar apenas as
linhas que contenham "pass in" e, ao mesmo tempo, não contenham "icmp":
$0~"pass in" && $0!~"icmp" { ... }
No programa (a parte entre chaves), eu uso a função 'split' pra dividir
o campo $12 usando seus pontos como separador e atribuindo o resultado a
um vetor de nome "out":
split($12,out,".");
Finalmente, eu uso a função 'substr' pra remover o ":" do final do
quinto elemento do vetor obtido anteriormente, e é isso que eu mando pra
saída com o 'print':
print substr(out[5], 1, length(out[5])-1)
O restante é o que vc faz pra agrupar e ordenar os resultados, só que,
no final, eu tiro o 'head' e o 'sed' pra fazer todo o processamento
final com o AWK novamente:
awk 'NR <= 20 {print $1";"$2}'
Aqui, 'NR <= 20' é uma regra que vai limitar a saída aos 20 primeiros
registros, enquanto que, no programa, eu imprimo '$1' e '$2' já
concatenados com o caractere ';'...
Abraços!
Blau Araujo
-----------------------------
https://debxp.org
https://ask.debxp.org
https://blauaraujo.com
Em 11/03/2021 09:35, Blau Araujo escreveu:
Salve!
Eu fiquei curioso pra saber o tempo que isso levaria (ou se funcionaria):
```
awk '$0~"pass in" && $0!~"icmp" { split($12,out,"."); print
substr(out[5], 1, length(out[5])-1) }' <(gzip -dc SEU_ARQUIVO) | sort |
uniq -c | sort -rn | awk 'NR <= 20 {print $1";"$2}'
```
Abraços!
Blau Araujo
-----------------------------
https://debxp.org
https://ask.debxp.org
https://blauaraujo.com
Em 10/03/2021 19:22, Marcelo Primo por (shell-script-pt) escreveu:
Mar 09 00:00:03.146758 rule 12/(match) pass in on em0:
198.199.88.65.61953 > *192.168.1.143.9004**:* S
3776023135:3776023135(0) win 1024
Mar 09 00:00:03.151840 rule 12/(match) pass in on em0:
198.199.88.65.61953 > *192.168.1.176.9004:* S 4103556202:4103556202(0)
win 1024
Mar 09 00:00:03.168233 rule 12/(match) pass in on em0:
203.212.200.241.58481 > *192.168.1.210.23:* S 1794254071:1794254071(0)
win 5808 <mss 1452,sackOK,timestamp 63610891 0,nop,wscale 2> (DF)
Mar 09 00:00:03.190210 rule 12/(match) pass in on em0:
178.175.97.53.46828 > *192.168.1.210.23:* S 700145820:700145820(0) win
5808 <mss 1452,sackOK,timestamp 159224881 0,nop,wscale 1> (DF) [tos 0x4]
Mar 09 00:00:03.213339 rule 12/(match) pass in on em0:
131.159.24.205.51075 > *192.168.1.212.80:* S 2924909527:2924909527(0)
win 65535 <sackOK,timestamp 4294967295 16843009,wscale
1,nop,opt-34:,opt-64:,opt-30:00810c0c0c0c0c0c0c0c,eol>
Mar 09 00:00:03.263630 rule 12/(match) pass in on em0:
138.197.180.77.61953 > *192.168.1.194.10000:* S
3809871894:3809871894(0) win 1024
Mar 09 00:00:03.394312 rule 12/(match) pass in on em0:
178.175.97.53.53172 > *192.168.1.210.23:* S 2983985618:2983985618(0)
win 33941 [tos 0x4]
Mar 09 00:00:03.500488 rule 12/(match) pass in on em0:
171.67.71.100.35957 > *192.168.1.249.8848:* S 1091778644:1091778644(0)
win 65535
Mar 09 00:00:03.637855 rule 12/(match) pass in on em0:
203.212.200.241.58457 > *192.168.1.210.23:* S 1746544785:1746544785(0)
win 5808 <mss 1452,sackOK,timestamp 63610938 0,nop,wscale 2> (DF)
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse:
https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas,
acesse https://lists.nongnu.org/archive/html/shell-script-pt/
NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
utilize somente esta.
- [shell-script-pt] Parser em log pflogfile, Marcelo Primo, 2021/03/10
- Re: [shell-script-pt] Parser em log pflogfile, Julio C. Neves, 2021/03/10
- Re: [shell-script-pt] Parser em log pflogfile, Blau Araujo, 2021/03/11
- Re: [shell-script-pt] Parser em log pflogfile,
Blau Araujo <=
- Re: [shell-script-pt] Parser em log pflogfile, Marcelo Primo, 2021/03/11
- Re: [shell-script-pt] Parser em log pflogfile, Blau Araujo, 2021/03/11
- Re: [shell-script-pt] Parser em log pflogfile, Marcelo Primo, 2021/03/11
- Re: [shell-script-pt] Parser em log pflogfile, Arkanon, 2021/03/11
- Re: [shell-script-pt] Parser em log pflogfile, Marcelo Primo, 2021/03/11
- Re: [shell-script-pt] Parser em log pflogfile, Arkanon, 2021/03/11
- Re: [shell-script-pt] Parser em log pflogfile, Arkanon, 2021/03/12
- Re: [shell-script-pt] Parser em log pflogfile, Arkanon, 2021/03/12
- Re: [shell-script-pt] Parser em log pflogfile, Marcelo Primo, 2021/03/12
Re: [shell-script-pt] Parser em log pflogfile, Itamar Santos de Souza, 2021/03/12