linux-l: nochmal kleines perl-problem...
Jens Dreger
jens.dreger at physik.fu-berlin.de
Do Mär 29 18:19:28 CEST 2001
On Thu, Mar 29, 2001 at 03:30:29PM +0200, Manuel Tennert wrote:
> > Hallo,
> >
> > Ich möchte, daß mein Script auf verschiedene Befehle von autorisierten
> > Usern reagiert. Diese sollen anhand ihrer mask identifiziert werden.
> > Days ganze funktioniert schon, bei festen masks.
> > Problem ist jetzt, daß das ganze bei dynamischen IP adressen Variable
> > ist, also z.B.:
> > ident at p3E9BEB0D.dip.t-dialin.net
> >
>
> Hey an diesem Problem brüte ich jetzt auch schon eine ganze Woche und hab auch
> noch keine Lösung....
> wäre wirklich gut wenn jemand einen Vorschlag parat hätte...
----------8<-----------------------------
#!/usr/local/bin/perl -w
#
# mask.pl
#
my @mask_patterns = (
"blah\@blub.de",
"ident\@p3E9BEB0D.dip.t-dialin.net",
"ident\@p[0-9A-F]{8}.dip.t-dialin.net"
);
foreach $mask (@ARGV) {
print "$mask:\t", &check_mask($mask) ? "ok" : "no way", "\n";
}
sub check_mask {
my $mask = shift @_;
my $ok = 0;
foreach $pattern (@mask_patterns) { if($mask =~ /$pattern/) { $ok++; } }
return $ok;
}
--------------------8<--------------------------
Test:
dreger at smart:..belug/masks> ./mask.pl blah at blub.de \
ident at p3E9BEB0D.dip.t-dialin.net \
ident at p3E9BEB0F.dip.t-dialin.net \
ident at whatever.dip.t-dialin.net
blah at blub.de: ok
ident at p3E9BEB0D.dip.t-dialin.net: ok
ident at p3E9BEB0F.dip.t-dialin.net: ok
ident at whatever.dip.t-dialin.net: no way
Beliebig ausbaubar. Man verwende _nicht_ den zu testenden String als
Pattern, sondern gebe Pattern an, die auf den zu testenden String
angewendet werden.
Der Pattern "ident\@p[0-9A-F]{8}.dip.t-dialin.net" erschlaegt alle
Adressen, die mit ident at p anfangen, dann 8 beliebige HEX-Zeichen
enthalten und mit .dip.t-dialin.net aufhoeren.
Gruss,
Jens.
Mehr Informationen über die Mailingliste linux-l