Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

Capturando os endereços de IP em um log gerado por nmap.


O arquivo de log a seguir foi gerado pelo comando nmap durante o scaneamento para verificação de hosts online e cujo conteúdo foi salvo em um arquivo chamado nmap.log. O objetivo é filtrar as informações e capturar somente os endereços de IP de cada domínio.

nmap.log

Nmap scan report for 200-169-122-201.dominio.net.br (200.170.118.201)
Host is up (0.85s latency)
Nmap scan report for 200-169-118-210.dominio.net.br (200.170.118.210)
Host is up (0.49s latency)
Nmap scan report for 200-169-118-223.dominio.net.br (200.170.118.223)
Host is up (0.40s latency)
Nmap scan report for 200-169-118-231.dominio.net.br (200.170.118.231)
Host is up (0.30s latency)
Nmap scan report for 200-169-118-204.dominio.net.br (200.170.118.204)
Host is up (0.74s latency)
Nmap scan report for 200-169-118-217.dominio.net.br (200.170.118.217)
Host is up (0.15s latency)

Exemplo 1:

Com o comando sed e utilizando uma expressão regular composta por um grupo de captura que salva somente os elementos entre parênteses \(([^)]+)\) e que posteriormente é resgatado com o uso do retrovisor \1. O parâmetro -n suprime a saída do buffer padrão enquanto a flag p imprime somente as linhas que iniciam com a expressão Nmap scan.

$ sed -nr 's/^Nmap scan.*\(([^)]+)\)/\1/p' nmap.log

Exemplo 2:

Aplicando o mesmo conceito acima só que utilizando a função regex.groups contida na biblioteca regex.sh.

#!/bin/bash

source regex.sh

regex.groups '^Nmap scan.*\(([^)]+)\)$' "$(< nmap.log)" $REG_CASE

Saída:

200.170.118.201
200.170.118.210
200.170.118.223
200.170.118.231
200.170.118.204
200.170.118.217

Exemplo 3:

Usando a função all para obter somente as linhas que iniciam com a expressão Nmap combinando o seu retorno com a função string.field para pegar o último campo -1 delimitado por espaço.

string.field "$(all "$(< nmap.log)" '=~ ^Nmap')"  ' ' -1

Saída:

(200.170.118.201) 
(200.170.118.210) 
(200.170.118.223) 
(200.170.118.231) 
(200.170.118.204) 
(200.170.118.217)
Note que neste exemplo os parênteses estão presentes na expressão, porém,  podem ser facilmente removidos já que a parte mais difícil já foi realizada.

Comentários

Contato

Nome

E-mail *

Mensagem *