Depending on the number of IPs it might be slightly better performance if you used Regexp::Common and $RE{net}{IPv4} to extract out IP-address-looking-things from rule lines, then checked those against a hash for hits of interesting ones. Rather than running n different regular expressions over each firewall rule line n times, this runs one over only as many times as necessary to get out the IP-ish things in any given rule line and then you're doing a (much faster) hash existence test to see if that IP is a wanted one.
use Regexp::Common qw( net ); my %interesting_ips; while( <IPS> ) { chomp; $interesting_ips{ $_ } = 1; } while( my $fw_line = <RULES> ) { while( my( $addr ) = $fw_line =~ m{($RE{net}{IPv4})}g ) { say qq{$.: found interesting address '$addr'} if exists $interesting_ips{ $addr }; } }
The cake is a lie.
The cake is a lie.
The cake is a lie.
In reply to Re: Sifting through firewall rules using a script
by Fletch
in thread Sifting through firewall rules using a script
by networkdude
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |