Eu gostaria de imprimir apenas o endereço IP e o campo de portas abertas de um determinado arquivo gnmap.
Host: 123.123.123.123 () Portas: 80/open/tcp//http?///, 443/open/tcp//https?///, 8083/closed/tcp//us-srv///, 65001 /closed/tcp///// Estado ignorado: filtrado (65531) Índice Seq: 262 IP ID Seq: Randomizado Host: 123.123.123.124 () Portas: 80/open/tcp//http?///, 443/open/tcp//https?///, 10443/open/tcp//https///, 65001/closed /tcp///// Estado ignorado: filtrado (65531) Índice Seq: 262 IP ID Seq: Randomizado Host: 123.123.123.125 () Portas: 80/open/tcp//http?///, 443/open/tcp//https?///, 8083/closed/tcp//us-srv///, 8445 /open/tcp//https///, 65001/closed/tcp///// Estado ignorado: filtrado (65531) Índice de sequência: 262 ID de IP Seq: aleatório Host: 123.123.123.126 () Portas: 1337/open/tcp//https?///, 8083/closed/tcp//us-srv///, 65001/closed/tcp///// Estado ignorado: filtrado (65531) Índice Seq: 262 IP ID Seq: Randomizado
A saída esperada é
123.123.123.123 80/open/tcp//http?///, 443/open/tcp//https?/// 123.123.123.124 80/open/tcp//http?///, 443/open/tcp//https?///, 10443/open/tcp//https/// 123.123.123.125 80/open/tcp//http?///, 443/open/tcp//https?///
Eu já tentei vários comandos diferentes, um deles é o comando abaixo.
cat targets_osdetection.gnmap | awk '/open/{print $2 " " $5 " "$6 " " $7}'
Mas ele imprime apenas os campos correspondentes ao campo $Number e como cada IP pode não ter o mesmo número de portas abertas, este comando não é tão eficiente.
Alguém pode fornecer a solução awk para isso?