Shellskript um Allow-Regeln zu generieren.

StepByStep

New Member
Hallo liebes Forum,

ich habe eine ziemlich große Liste von IP-Adressbereichen.
Diese liegt in folgendem Format vor:

2.160.0.0-2.175.255.255
46.4.0.0-46.4.255.255
46.5.0.0-46.5.255.255
46.31.216.0-46.31.223.255
46.35.32.0-46.35.63.255
46.41.0.0-46.41.63.255
46.78.0.0-46.79.255.255
46.80.0.0-46.95.255.255
46.110.0.0-46.110.255.255
46.128.0.0-46.128.255.255
53.0.0.0-53.255.255.255
62.4.64.0-62.4.95.255
62.8.32.0-62.8.63.255
62.8.128.0-62.8.255.255
62.40.0.0-62.40.31.255
62.44.32.0-62.44.63.255
62.50.96.0-62.50.127.255

Da man ja relativ gut komplette Adressbereiche erlauben oder verbieten kann,
würde ich gern von einem erfahrenen Skripter erfahren, wie ich aus der Liste
entsprechende Regeln automatisiert generieren könnte.

Also beispielsweise für den zweiten Adressbereich:
46.4.0.0-46.4.255.255
in
allow from 46.4

Da nicht alle Adressbereiche so simpel zu verarbeiten sind,
stehe ich doch etwas allein da.

Dies ist keine "kannste mal...." Frage... sondern ich wäre schon sehr zufrieden, wenn ich ein paar Befehle oder Ansatzpunkte genannt bekäme.

Die Liste der Adressbereiche ist doch sehr groß, und ich komme um eine
zusammenfassende Verarbeitung nicht herum, schon allein der Performance wegen.

Lieber Gruß
StepbyStep
 
Perl-Einzeiler für die Shell:
Code:
perl -MNet::CIDR -n -e '@cidrs=Net::CIDR::range2cidr($_);print qq(allow from $_\n) for @cidrs'
Parameter: Dateiname [Dateiname]...
- als Dateiname liest von STDIN; Pipen ist also möglich.

oder als Perl-Programm gencidr (Parameter wie oben):
Code:
#!/usr/bin/perl

use Net::CIDR;
use strict;
use warnings;

while (<>) { 
  my @cidrs=Net::CIDR::range2cidr($_);
  print qq(allow from $_\n) for @cidrs;
}
 
Last edited by a moderator:
Back
Top