Paul Archer wrote:
> 12:15pm, Greg Schiedler wrote:
>
>> OK I'm trying to modify the code below to recognize an additional
>> next if statement. I have included a snip of the file that the code
>> uses an input.
>>
>> Greg
>>
>> next if /Acct-Session-Id = "00000000"/; This statment works!
>>
>
> A 'next if /...../' is a short form for:
>
> if ($_ =~ m/..../) {
> next;
> }
>
> So... whatever is in between the forward slashes is the pattern you
> are looking for within the string contained in your default variable
> ($_).
>
>
> A single equals sign is *assignment*, where a double equal sign is a
> test of numeric equality (and 'eq' is a test to see if two strings
> are equal).
>
Note, you're not using the equals as an assignment here. You're matching
on the literal "=" in the string.
> HTH,
>
> Paul
>
>> # I added this statement. I don't understand the /'s in the
>> statement. And my guess is that I need to modify the statement to
>> properly work with an IP over a number or string.
>>
>> next if /NAS-IP-Address = "192.168.0.1"/; This statement does not
>> work.
>>
In your log, the line to be matched is:
NAS-IP-Address = 192.168.0.1
No quotes. It should match if you pull the quotes out of your "regex"
statement, though I'd also suggest adding a \ before the .'s to ensure
you match a period and not a "wild" character...
>> next if /User-Name = "$userskp"/; This statement works!
>>
>> Can anyone tell me why my simple addition will not work as I think
>> it should.
>>
>> Greg :-)
>>
>>
>> <Code Snipit>
>> ...
>> ...
>> require 'usrmon.cf';
>>
>> if (-M "$file" < .04) {
>>
>> $date= (localtime)[3];
>>
>> dbmopen(%hash, "$dbfile", 0600);
>>
>> open (FILE, "$file") || die;
>> open (FILEBK, ">>$filebk") || die;
>> while (<FILE>) {
>> $/ = '';
>> next if /Acct-Session-Id = "00000000"/;
>> next if /NAS-IP-Address = "192.168.0.1"/;
>> next if /User-Name = "$userskp"/;
>> print FILEBK;
>>
>> if (/Acct-Status-Type = Stop/ || /Acct-Status-Type = Start/) {
>> if (/User-Name = "([^"]+)"/){
>> $key= $1;
>> }
>> if (/Acct-Status-Type = Stop/) {
>> if (/Acct-Session-Time = (\d+)/) {
>> $used{$key}+= $1;
>> $uses{$key}++;
>> }
>> }
>> }
>> }
>> close(FILE);
>> open (FILE, ">$file");
>> print FILE "\n";
>>
>>
>>
>> <RADIUS Log Snip>
>> ...
>> ... Ascend-PreSession-Time = 27
>> CVX-Modem-Begin-Modulation = "V.90"
>> CVX-Modem-Error-Correction = "V.42"
>> CVX-Modem-Data-Compression = "V.42bis"
>> Timestamp = 1075939364
>> Timestamp = 1075939362
>>
>> Wed Feb 4 16:03:11 2004
>> Acct-Status-Type = Start
>> User-Name = "[EMAIL PROTECTED]"
>> Acct-Session-Id = "0000062A"
>> Framed-IP-Address = 10.0.0.2
>> NAS-IP-Address = 192.168.0.1
>> Timestamp = 1075939456
>> Acct-Delay-Time = 0
>> Timestamp = 1075939391
>>
>> Wed Feb 4 16:04:00 2004
>> Acct-Status-Type = Stop
>> User-Name = "[EMAIL PROTECTED]"
>> Acct-Session-Id = "0000062A"
>> Acct-Session-Time = 49
>> Framed-IP-Address = 10.0.0.2
>> NAS-IP-Address = 192.168.0.1
>> Timestamp = 1075939505
>> Acct-Delay-Time = 0
>> Timestamp = 1075939440
>>
>> Wed Feb 4 16:04:21 2004
>> Acct-Status-Type = Start
>> NAS-Identifier = "cvx00.domain.com"
>> ...
>> ...
>> <End RADIUS Log Snipit>
>>
>> --
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>>
>>
>
> -------------------------------------------------
> "Welcome to downtown Coolsville--population: us."
> -------------------------------------------------
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>