Ich habe eine IP mit Subnetzmaske und möchte eine Tabelle erstellen, in der jede Zeile eine IP ist.Finden Sie alle IPs von Subnetz in Perl
Art wie folgt aus:
IP | MAC | Alive
192.168.1.1 | ... | yes
192.168.1.2 | ... | no
192.168.1.3 | ... | yes
...
Für einen Bereich mit Subnetz/24, ist dies einfach, da ich eine for-Schleife 0-254 erzeugen kann, aber ich habe Probleme mit der Tabelle mit einer Erzeugungs/21 Subnetz. Gibt es eine Möglichkeit, in Perl herauszufinden, was der minimale Host, der maximale Host und alles dazwischen ist?
Ich habe das Net::IP
und das NetAddr::IP
Modul überprüft, aber scheinen keine Lösung für mein Problem. Allerdings bin ich ein Perl-Neuling, also könnte es sein, dass ich es übersehen habe.
edit: gefunden, wie erste und letzte Adresse zu finden:
my $range = "IP/subnet" ;
my $ip = new Net::IP ($range) || die;
print $ip->ip(), "\n";
print $ip->last_ip(), "\n";
Jetzt muss ich in die IP-Adressen finden zwischen
gefunden Nur, dass auch und versuchte, aber es funktioniert nur für mich, wenn ich das Subnetz verwenden Adresse. Es scheint, dass ich das wissen muss und die erste Adresse nicht verwenden kann. So funktioniert es mit '192.168.0.0/21' und' 192.168.0/21', aber nicht mit '192.168.0.1/21'. Letzteres wird nach der Instantiierung "undef" zurückgeben. – simbabque
Es wurde eine Möglichkeit hinzugefügt, diese Subnetzadresse von einer beliebigen Adresse im Bereich abzurufen. Nicht schön, ich habe irgendwie eine Funktion erwartet, die genau das tut, aber sie nicht finden kann ... – Mat