Объединение выходных данных awk - PullRequest
0 голосов
/ 13 июня 2010

Я использую регулярное выражение для анализа вывода NMAP. Я хочу, чтобы IP-адреса были открыты с соответствующими портами. Теперь у меня есть очень наивный способ сделать это:

awk '/^Scanning .....................ports]/ {print substr ($2,1,15);}' results.txt
awk '/^[0-9][0-9]/ {print substr($1,1,4);}' results.txt | awk -f awkcode.awk

где awkcode.awk содержит код для извлечения чисел из подстроки. Первая строка печатает все ips, которые работают, а вторая дает мне порты. Моя проблема в том, что я хочу, чтобы они были сопоставлены друг с другом. Есть ли способ сделать это? Подойдет даже сценарий sed.

1 Ответ

1 голос
/ 13 июня 2010

Возможно, вам будет проще разобрать использование выходного формата "Grepable":

nmap -oG - -v -A 192.168.0.1-254

Пример вывода:

Хост: 192.168.1.1 (foo) Status: Up Хост: 192.168.1.1 (foo) Порты: 22 / open / tcp // ssh // OpenSSH 5.1p1 Debian 6ubuntu2 (протокол 2.0) /, 80 / open / tcp // http // Apache httpd 2.2.12 ((Ubuntu)) /, 139 / open / tcp // netbios-ssn // Samba smbd 3.X (рабочая группа: BAR) /, 445 / open / tcp // netbios-ssn // Samba smbd 3.X (рабочая группа: BAR) /, 7100 / open / tcp // font-service // X.Org X Сервер шрифтов / Игнорируемое состояние: закрыто (995)

Или, если у вас есть анализатор XML, используйте вывод XMLформат:

nmap -oX - -v -A 192.168.0.1-254

Пример вывода:

<?xml version="1.0" ?>
<?xml-stylesheet href="file:///usr/share/nmap/nmap.xsl" type="text/xsl"?>
<!-- Nmap 5.00 scan initiated Sun Jun 13 08:11:32 2010 as: nmap -oX - -v -A 192.168.1.1-254 -->
<nmaprun scanner="nmap" args="nmap -oX - -v -A 192.168.1.1-254" start="1276434692" startstr="Sun Jun 13 08:11:32 2010" version="5.00" xmloutputversion="1.03">
...
...
<host starttime="1276434692" endtime="1276434775"><status state="up" reason="syn-ack"/>
<address addr="192.168.1.1" addrtype="ipv4" />
<hostnames><hostname name="foo" type="PTR" /></hostnames>
<ports><extraports state="closed" count="995">
<extrareasons reason="conn-refused" count="995"/>
</extraports>
<port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="0"/><service name="ssh" product="OpenSSH" version="5.1p1 Debian 6ubuntu2" extrainfo="protocol 2.0" ostype="Linux" method="probed" conf="10" /><script id="ssh-hostkey" output="1024 1a:2b:4d:5e:6f:00:f1:e2:d3:c4:b5:a6:e2:f3:fe (DSA)&#xa;2048 fa:eb:dc:cd:be:af:a0:75:65:8a:52:7d:11:22:33:44 (RSA)" /></port>

...