Chris Knipe wrote:
Lo everyone,
Hello,
Can someone please give me a regex to parse the following...
Flags: X - disabled, I - invalid, D - dynamic, J - rejected,
C - connect, S - static, r - rip, o - ospf, b - bgp
# DST-ADDRESS G GATEWAY DISTANCE INTERFACE
0 S 0.0.0.0/0 r 198.19.0.2 1 SERVER-CORE
1 S 196.0.0.0/8 r 165.146.192.1 1 National Gateway
2 DC 198.19.1.0/24 r 0.0.0.0 0 WIRELESS-CORE
3 Ib 198.19.0.0/24 u 0.0.0.0 200 (unknown)
4 DC 198.19.0.0/24 r 0.0.0.0 0 SERVER-CORE
5 DC 192.168.1.0/24 r 0.0.0.0 0 INTERNAL-CORE
6 DC 165.146.192.1/32 r 0.0.0.0 0 National Gateway
[EMAIL PROTECTED] >
I want the regex to return the rule number for all route entries that
is static (S Flag) on Interface "National Gateway". For added security,
I'd like it if the regex will also only return true if the gateway
address is part of 165.165.0.0/8 or 165.146.0.0/8
Basically, I need to use the rule number in another command to delete
the route entry... So I presume I'll need to extract it via the regex
I take it that the first column is the rule number?
# UNTESTED
my ( $rule_number ) =
m{^
\s* # start with optional whitespace
(\d+) # capture the first column
\s+
S # second col. must be 'S'
\s+
\S+
\s+
\S+
\s+
165\.(?: 146 | 165 ) # fifth col. must be correct IP range
(?: \.
(?: [1-9]?\d | 1\d\d | 2[0-4]\d | 25[0-5] )
){2}
\s+
\d+
\s+
National[ ]Gateway # last (seventh) column
$}x;
# UNTESTED
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>