
perlisgreat
Novice
Jun 15, 2009, 2:33 AM
Post #15 of 36
(36215 views)
|
hi namishtiwari, Maybe I'm being obtuse, but to get comma separated output you...use commas? ... print "$authMethod,$user,$authenticates->{$authMethod}->{$user}\n"; ... Ok, think about your problem. Your latest requirement is to output 1 record for each session. This is actually easier, since you no longer need to group statistics by AuthMethod. Furthermore, since logfile entries naturally occur in timestamp order, you don't even need to sort your output! What this means is you can throw away the $authenticates hash altogether and print each output line as soon as you parse it. Why don't you give it a try? Cheers, Larry Thanks Larry for your suggestions. I tried this code --
#!/usr/bin/perl print "Hello, World...\n"; my $logFile = $ARGV[0]; die "usage: $0 <logFile>" unless $logFile; die "Logfile $logFile doesn't exist" unless -f "$logFile"; open(my $log, "<", $logFile) or die "Can't open $logFile for reading."; print "Processing file $logFile...\n"; #my $authenticates = {}; my $n = 0; my $Time_Stamp ; my $User_Name; my $Success; my $Failure; my $ErrorCode; my $ErrorMsg; while(my $line = <$log>) { $n++; $line =~ tr/\r\n//d; if ($line =~ /^(.*)INFO:.*recvd AA_BIN_MSG_GET_WLT/) { $Time_Stamp = $1; while ( $line = <$log> ) { if ($line =~ /recvd AA_BIN_MSG_VER_CHG$/) { while ( $line = <$log>) { if ($line =~ /Cert.*UserID=(\d+)/) { $User_Name = $1 ? $1 : "NULL" ; } } while ( $line = <$log> ) { if ($line =~ /ArcotID Auth SUCCESS/) { $Success = "Success"; } } while ( $line = <$log> ) { if ($line =~ /Auth fail due to signature verification/) { $Failure = "Failure"; } } while ( $line = <$log> ) { if ($line =~ /Authentication mechanism returned \[(\d+)\]/) { $ErrorCode = $1; } } while ( $line = <$log>) { if ($line =~ /(Auth fail due to signature verification.)/) { $ErrorMsg = $1 ? $1 : "Null"; } } }print "$Time_Stamp , $User_Name , $Success , $Failure , $ErrorCode , $ErrorMsg \n"; next; } } } I am not getting the desired output. I think there is some logic problem in my code,though i am getting all the values in variables but while printing nothing comes. The snippet of the log file is like this-- Native Server: recvd AA_BIN_MSG_GET_WLT Fri May 29 18:31:53.467 2009 Morocco Standard Time INFO: pid 3216 tid 2672: 17: 132357: ArAuthFrameworkImpl::doAuth::11:132357:: Authentication mechanism returned [1] for AuthIdentity [;ARCARD] Fri May 29 18:31:53.467 2009 Morocco Standard Time INFO: pid 3216 tid 2672: 170: 132357: Handle_NSPAdvice:: Handling NSPAdvice for mechanism [4] Fri May 29 18:31:53.467 2009 Morocco Standard Time INFO: pid 3216 tid 2672: 17: 132357: ArAuthFrameworkImpl::doPostAuth::11:132357:: Authentication mechanism returned [1] for AuthIdentity [01302904] Fri May 29 18:31:53.482 2009 Morocco Standard Time INFO: pid 3216 tid 2672: 60: 132357: Sending Continue with challenge Fri May 29 18:31:53.482 2009 Morocco Standard Time INFO: pid 3216 tid 2672: 61: 132357: Packet being sent Fri May 29 18:31:53.482 2009 Morocco Standard Time INFO: pid 3216 tid 2672: 60: 0: Packet Sent (MsgType:110, Size: 1564 Bytes). Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 60: 0: Packet Received (MsgType:109, Size: 1463 Bytes). Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 60: 0: Locale Name[en], Locale ID[1] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 0: 132358: Message: ArAuthBinaryAuthRequestMgr::setSecurityInfo: security_info_offset [0] is invalid. Assuming security info not available. Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 17: 132358: Using session identifier [11:132358] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 17: 132358: ArAuthFrameworkImpl::doPreAuth::11:132358:: Authentication mechanism returned [0] for AuthIdentity [] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: Arcot Native Server: recvd AA_BIN_MSG_VER_CHG Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: Cert Subject String....:[CN=01302904;O=MLS; UserID=0123456; CardName=ARCARD] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: Cert issuer............:[] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: Cert serial String.....:[e93b] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: ArcotId Certificate received with signature have ArcotExtension. Cert issuer=CN= Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: ArcotID Auth SUCCESS (serial Number [e93b]) For Fail the line is -- Auth fail due to signature verification.Serial Number [11872] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: Session tracker Id associated with verify signed challenge[11:132351] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 17: 132358: ArAuthFrameworkImpl::doAuth::11:132351:: Authentication mechanism returned [0] for AuthIdentity [] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: Handle_NSPAdvice:: Handling NSPAdvice for mechanism [4] Fri May 29 18:31:53.498 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: Handle_NSPAdvice::NSP Action :[NSP_RESET] Fri May 29 18:31:53.514 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 170: 132358: NSP Update Query is based on Serial Number Fri May 29 18:31:53.514 2009 Morocco Standard Time INFO: pid 3216 tid 2888: 17: 132358: ArAuthFrameworkImpl::doPostAuth::11:132351:: Authentication mechanism returned [0] for AuthIdentity [01302904]
|