SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] rutine, optæller...



On Wed, May 26, 1999 at 03:21:45PM +0200, Lennart Hansen wrote:
> Jeg ville lige høre om nogle af jer havde en ide til en rutine der
> finder alle IP eller nummer fra F.eks. 10.0.0.2 til 10.5.4.55.
> 
> Altså så den(perl) ligger dem i en variabel. så ALLE IP'erne kan bruges
> en ad gangen...
> 
> Jeg er startet på en program til banne og unbanne IP'ere med ipchains,
> det er i dette program jeg vil have den rutine, her kommer det :
> banip.pl
> 

Det er ikke særlig effektivt at banne en IP adresse af gangen,
det vil faktisk nok have meget dårlige følger for performance.

Det er meget bedre at banne et helt netværk. Det gør du ved
at angive en net adresse og en netmask, således som her:

  ipchains -A input -j DENY -s 10.0.0.0/16  # 10.0.0.0 - 10.0.255.255
  ipchains -A input -j DENY -s 1.2.3.0/24   # 1.2.3.0  - 1.2.3.255

Det bliver til meget færre check per IP-pakke (65535 færre i
første tilfælde, sammenlignet med en regel pr. IP).

Hvis du stadig har brug for en rutine til at finde IP adresserne,
kan du stjæle lidt fra det vedlagte script.

Mvh,
Sune Kirkeby

#!/usr/bin/perl

my $lower = $ARGV[0];
my $upper = $ARGV[1];

# beregn den numeriske (32-bit int) værdi af IP adresserne
for ($lower, $upper) {
	s/(\d+)\.(\d+)\.(\d+)\.(\d+)/
	$4 + $3 * (2 ** 8) + $2 * (2 ** 16) + $1 * (2 ** 24)
	/ex;
}

# for alle adresser ml. $lower og $upper (inklusive)
for (my $i = $lower; $i <= $upper; ++$i) {
	# beregn IP adressen ud fra den numeriske værdi
	my $ip = 
		(($i & 0xFF000000) >> 24) . "." .
		(($i & 0x00FF0000) >> 16) . "." .
		(($i & 0x0000FF00) >>  8) . "." .
		(($i & 0x000000FF) >>  0)
	;
	print $ip . " ($i)\n";
}



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:52
Denne side vedligeholdes af MHonArc .