Hello everyone,
I'm parsing a Logwatch report I get daily from my server and have hit
a snag. I'd like to grab everything between the "pam_unix Begin" line
and the "pam_unix End" line.
--------------------- pam_unix Begin ------------------------
sshd:
Invalid Users:
Unknown Account: 17 Time(s)
Authentication Failures:
admin (ym74043.ym.edu.tw ): 4 Time(s)
root (ym74043.ym.edu.tw ): 3 Time(s)
unknown (ym74043.ym.edu.tw ): 17 Time(s)
---------------------- pam_unix End -------------------------
The code I have is (assuming the entire report is in $body):
$body =~ /
\-+\spam_unix\sBegin\s\-+
\((.*)\s*\) #matchline
\-+\spam_unix\sEnd\s\-+
/sx;
I'm trying to grab "ym7403.ym.edu.tw" from each line after
"Authentication Failures".
I've also tried using this as the "matchline":
\(([A-Za-z0-9.])\s*\)
Yes, I realize I'll need to put either + or * at the end of the
"matchline" to get the multiple matches I'm seeking.
Another approach I'd thought about was (pseudo code):
while body
start and continue pushing lines onto array if pam_unix Begin
stop pushing lines onto array if pam_unix End
I know this is extremely simple, but I just can't seem to figure it out.
Anyone have ideas?
Thanks,
Kevin
--
Kevin Old
[EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>