Retorna vários grupos de correspondência de expressões regulares de um resultado retornado pelo nmap

0

Eu tenho um script nmap que executa testes para relés abertos em uma lista de IPs. Inicialmente eu tive que retornar apenas o nome do host e o IP de um host se foi descoberto que ele tem uma porta aberta das portas especificadas no comando, mas isso parece não ser preciso porque uma porta aberta não significa os testes do NSE são bem sucedidos. então, eu quero retornar o nome do host e IP + o resultado do NSE em uma linha.

O comando que eu usei é:

nmap --script smtp-open-relay.nse --open -p 25,2525,587,465,2526 -iL ./short_servers_list.txt

O exemplo de saída deste comando é:

*Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-08 07:25 PDT

Nmap scan report for foo01.bar.com (10.10.10.1)

Host is up (0.0020s latency).

Not shown: 3 closed ports

PORT STATE SERVICE

25/tcp open smtp

|_smtp-open-relay: Server is an open relay (5/16 tests)

2526/tcp open unknown

Nmap scan report for foo02.bar.com (10.10.10.2)

Host is up (0.082s latency).

Not shown: 4 closed ports

PORT STATE SERVICE

25/tcp open smtp

|_smtp-open-relay: SMTP EHLO nmap.scanme.org: failed to receive data: connection closed

Nmap done: 10 IP addresses (6 hosts up) scanned in 2.16 seconds*

Eu preciso mostrar o seguinte:

foo01.bar.com (10.10.10.1) smtp-open-relay: Server is an open relay (5/16 tests)

foo02.bar.com (10.10.10.2) smtp-open-relay: SMTP EHLO nmap.scanme.org: failed to receive

como posso fazer isso usando ferramentas / comandos bash comuns (grep ou sed etc.)?

    
por DaveIce 08.08.2017 / 16:40

1 resposta

0

Com awk :

nmap --script smtp-open-relay.nse --open -p 25,2525,587,465,2526 -iL ./short_servers_list.txt \
| awk '/^ *Nmap scan report/{ sub(/^ *Nmap scan report for */, "", $0); printf "%s ",$0 }
       /_smtp-open-relay/{ sub(/^ *\|_/, "", $0); print $0 }'
    
por 08.08.2017 / 17:11