2016-07-26 17 views
0

Ich versuche, alle IPs aus einem IP-Adressbereich wie 72.21.206.0/23 in der Befehlszeile bevorzugter mit einem einzigen Befehl zu drucken.Priting alle IP-Adressen aus einem IP-Bereich ssh/bash

Ich habe mehrere Befehle mit awk & in Kombination versucht, aber war nicht in der Lage, das gewünschte Ergebnis zu erzielen.

Zum Beispiel, wenn ich folgend in file3 habe:

72.21.110.0/16 
72.21.206.0/23 

und ich würde alle IPs von 72.21.206.0/23 extrahieren möge und sie in separaten Zeilen auf dem Bildschirm drucken. Ich habe nur diesen Punkt aufgrund meiner Grundkenntnisse erreicht:

awk -F'/' 'NR==2{print $1+1}' file3 

, die von meinen Annahmen drucken sollte, ist es aber nicht:

72.21.206.1 

Könnten Sie bitte helfen bitte.

Antwort

1

Wenn Sie nmap zur Verfügung haben, können Sie nur so etwas wie laufen:

nmap -n -sL 72.21.110.0/16 

Dieser Ausgang entlang der Linien produzieren:

Nmap scan report for 72.21.0.0 
Nmap scan report for 72.21.0.1 
Nmap scan report for 72.21.0.2 
[...] 
Nmap scan report for 72.21.255.253 
Nmap scan report for 72.21.255.254 
Nmap scan report for 72.21.255.255 
Nmap done: 65536 IP addresses (0 hosts up) scanned in 33.42 seconds 

Antworten auf this question schlagen eine Lösung mit ipcalc. Und haben festgestellt, dass ich glaube, ich bin diese Kennzeichnung als Duplikat ...

aktualisieren

Eine Lösung in awk, nur für Sie:

BEGIN { 
    FS="/" 
} 

{ 
    split($1, octets, "."); 
    base=lshift(octets[1], 24) + lshift(octets[2], 16) 
    + lshift(octets[3], 8) + octets[4]; 
    max=lshift(1, 32-$2); 

    for (i=0; i<max; i++) { 
    addr = base + i; 
    addr = sprintf("%s.%s.%s.%d", rshift(addr, 24), 
      rshift(and(addr, 0x00FF0000), 16), 
      rshift(and(addr, 0x0000FF00), 8), 
      and(addr, 0xFF)) 
    print addr 
    } 
} 

Bei Eingabe wie folgt aus:

$ echo 192.168.1.0/28 | awk -f ipranger.awk 

Sie Ausgabe wie folgt erhalten:

192.168.0.0 
192.168.0.1 
192.168.0.2 
192.168.0.3 
192.168.0.4 
192.168.0.5 
192.168.0.6 
192.168.0.7 
192.168.0.8 
192.168.0.9 
192.168.0.10 
192.168.0.11 
192.168.0.12 
192.168.0.13 
192.168.0.14 
192.168.0.15 
+0

Die angegebene Lösung funktioniert nur in der Hälfte der Fälle, da nicht alle Server, auf denen ich das Skript oder den Befehl verwenden würde, über Nmap verfügen. Wie auch immer, danke für die schnelle Antwort. –

+0

Ich habe eine pure-'awk'-Lösung hinzugefügt. – larsks