2016-03-27 17 views
0

Ich habe meine Ausgabe nmap Ergebnis in eine Datei test.txt genannt, und es sieht wie folgt aus:Grep der nmap Ausgang

Nmap scan report for 192.168.1.5 
Host is up (0.13s latency). 
PORT STATE SERVICE VERSION 
23/tcp open telnet Linux telnetd 
-- 
Nmap scan report for 192.168.1.7 
Host is up (0.13s latency). 
PORT STATE SERVICE VERSION 
80/tcp open http  Popper 
-- 
Nmap scan report for 192.168.1.20 
Host is up (0.13s latency). 
PORT STATE SERVICE VERSION 
110/tcp open pop3 Dove 

ich ausgeben möchte, dass die Ergebnisse aus der Datei in meinem Terminal mit grep und Rohr, das das Ergebnis im Format zeigt: IP-Adresse durch die offenen Ports wie folgt folgt:

192.168.10.2 
80 
223 
53 
192.168.10.7 
80 
223 
+0

Gute Beispieldaten und erforderliche Ausgabe (Plus-Uno!), Aber Sie haben vergessen, Ihren Code (minus-Uno!) Zu zeigen. Stackoverflow ist kein kostenloser Codierungsdienst. Fast jeder Versuch, Ihr Problem zu lösen, zeigt, dass Sie nicht nur jemanden suchen, der es für Sie erledigt. Um Ihnen einen Hinweis zu geben, könnten Sie 'ncat ... | verwenden sed 's/Nmap scan report für //; s/Host ist up [(] //' 'um nicht benötigte Header - Informationen zu entfernen. Benutze, was ich zur Verfügung gestellt habe, um alle nicht benötigten Header - Informationen zu entfernen ** und aktualisiere deine Q **. Viel Glück. – shellter

Antwort

0

ich folgendes tun würde:

  1. Ruft einen regulären Ausdruck ab, um die IPs und Ports für die nmap-Ausgabe abzugleichen. Sie können die Positionen beider nutzen, d. H. Die Ports befinden sich am Anfang der Zeile (^) und enden mit einem '/'-Zeichen, und IPs sind das letzte Element in der Zeile ($).
  2. Verwenden Sie grep -o, um nach einem dieser regulären Ausdrücke zu suchen (siehe den Operator OR auf der Regex (|)). Dies reduziert die Ausgabe auf nur die Übereinstimmungen.
1

Sie wollen wahrscheinlich:

cat test.txt | sed 's/Nmap scan report for //' | sed '/Host is/d' | sed '/Not shown/d' | sed '/All/d' | sed '/PORT /d' | cut -f1 -d"/" | sed '/^$/d' | sed '/--/d' 

Für nmap -F 192.168.0.1/24 > test.txt:

cat test.txt | tail -n+3 | sed '/Nmap done/d' | awk 'NR>1{print l}{l=$0}' | sed 's/Nmap scan report for //' | sed '/Host is/d' | sed '/Not shown/d' | sed '/All/d' | sed '/PORT /d' | cut -f1 -d"/" | sed '/^$/d' 

Witz. Es macht keinen Sinn ... Verwenden Sie nmap mit XML-Ausgabe -oX.
Lesen: https://nmap.org/book/output-formats-xml-output.html