Mit nmap nur die IP-Adressen der Online-Rechner ausgeben

19

Ich kann verwenden nmap, um die Liste der Hosts zu finden, die aktuell online sind. Was ich tun möchte, ist eine Liste nur ihrer IP-Adressen zu erhalten, jetzt zeigt es zusätzliche Informationen wie

Nmap scan report for 192.168.x.x' and 'Host is up (0.12s latency).

Was ich möchte, ist, einen nmapBefehl ausführen zu können , ein Textdokument der IP-Adressen zu erhalten, die aktuell online sind.

Ist das überhaupt möglich?

jasonwryan
quelle

Antworten:

33

Dies ist eine häufige:

nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up$/{print $2}'

Schneller Überblick über Optionen und Befehle:

  • -nDeaktiviert die umgekehrte Namensauflösung, da Sie nur IP-Adressen benötigen. In einem lokalen LAN ist dies wahrscheinlich auch der langsamste Schritt, sodass Sie eine gute Geschwindigkeitssteigerung erzielen.
  • -snbedeutet "Führen Sie keinen Port-Scan durch." Es ist dasselbe wie das ältere, das -sPmit dem Mnemonik "Ping-Scan" veraltet ist .
  • -oG -Sendet eine "grepable" -Ausgabe an stdout, an die weitergeleitet wird awk.
  • /Up$/ Wählt nur Zeilen aus, die mit "Nach oben" enden und Hosts darstellen, die online sind.
  • {print $2} Gibt das zweite durch Leerzeichen getrennte Feld aus, bei dem es sich um die IP-Adresse handelt.
bonsaiviking
quelle
Warum haben die $ danach /Up? Ich fand, dass der Befehl nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up/{print $2}'die gleichen Ergebnisse liefert.
Michael
1
@Michael Es ist nur eine zusätzliche Sicherheitsstufe, um sicherzustellen, dass wir keinen Müll drucken, falls etwas anderes den String "Up" enthält. Auf diese Weise funktioniert es auch, wenn Sie es gegen eine grepable Ausgabe in einer Datei eines anderen Scan-Typs ausführen, -sVder unvorhersehbare Zeichenfolgen von Netzwerkdienst-Bannern enthalten kann.
Bonsaiviking
3

Du könntest es weiterleiten an awk:

nmap -sP 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'
192.168.1.1
192.168.1.10
192.168.1.20
192.168.1.30
jasonwryan
quelle