1

Я просканировал около 50 хостов в сети с помощью этой команды:

nmap -sV -iL sweep_ips.txt -oG result.txt  

ex: ...
Host: 192.168.x.x ()    Ports: 8000/open/tcp//http//Apache httpd 2.2.3 ((CentOS))/  Ignored State: filtered (999)
...

Я отображаю IP-адреса тех, с http-портами найдено

grep http result.txt | awk '/http/{print $2}'

Все идет нормально. За исключением того, что http порт не всегда 80 или 443. У меня есть несколько странных, таких как 10000 и такие. Я хотел бы, чтобы awk нашел конкретное поле порта, в котором он находит "http", а затем отобразил часть или все это поле. Это возможно?

Что-то вроде:

192.168.x.x 8000

было бы достаточно.

Есть идеи?

1 ответ1

0
perl -lane 'print "$F[1] $1" if m{([0-9]*)/open[^,]*/http}'

Пытался сделать это с помощью awk, но он не делает захватов. Вместо этого ключ -a Perl разделяет строку, как и awk, а подстроки доступны через хеш %F Лучшее решение будет учитывать несколько служб "http" на одном хосте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .