2011-02-13 4 views
5

प्लेटफार्म: पर्ल के साथ विंडोज 2003 मैं आईआईएस लॉग फ़ाइल से उपयोगकर्ता आईडी को काटने का तरीका देख रहा हूं। फिर पता लगाएं कि उस उपयोगकर्ता ने क्या किया। अपलोड की गई फाइल, सीडब्ल्यूडी .. इस तरह की चीजें। [Uniqu_ID] उपयोगकर्ता आईडी है। उस आईडी को कैसे पुनर्प्राप्त करें और इसके लिए खोज करें। कृपया मदद करे।उपयोगकर्ता क्रियाओं को खोजने के लिए विंडोज सर्वर 2003 पर पार्स लॉग

+0

क्या आप कोड की कुछ उदाहरण पंक्तियां पोस्ट कर सकते हैं? समस्या अपेक्षाकृत आसान लगती है, लेकिन उदाहरण बहुत अच्छे होंगे। – simbabque

उत्तर

0

Log Parser 2.2:

लॉग पार्सर, रूप में अच्छी तरह कुंजी डेटा के रूप में एक शक्तिशाली, बहुमुखी उपकरण है कि इस तरह लॉग फ़ाइलें, एक्सएमएल फाइल और CSV फ़ाइलों के रूप पाठ आधारित आंकड़ों के सार्वभौमिक क्वेरी पहुँच प्रदान करता है पर स्रोत इवेंट लॉग, रजिस्ट्री, फ़ाइल सिस्टम, और सक्रिय निर्देशिका® के रूप में Windows® ऑपरेटिंग सिस्टम।

+0

मैं सर्वर पर कुछ भी डाउनलोड नहीं कर सकता। मुझे इस समय मेरे पास जो काम है उसके साथ काम करना है। विंडोज 2003 – Moe

+0

पर पर्ल अपने स्थानीय बॉक्स में डाउनलोड करें, और वहां लॉग को संसाधित करें। –

+0

मेरी इच्छा है कि मैं कर सकता हूं ... मैंने एक पर्ल स्क्रिप्ट लिखी है जो सर्वर पर स्थिति रिपोर्ट के लिए स्वयं ही चलती है। स्क्रिप्ट स्टेटस रिपोर्ट ईमेल करता है। मैं अपने पीसी से ऐसा नहीं कर सकता। इसे सर्वर पर चलाना है। – Moe

0

मुझे विंडोज 2003 सर्वर here पर आईआईएस लॉग फ़ाइल का एक उदाहरण मिला। फिर भी, उदाहरण के लॉग की अपनी लाइनें पोस्ट करें।

192.168.114.201, -, 03/20/01, 7:55:20, W3SVC2, SERVER, 172.21.13.45, 4502, 163, 3223, 200, 0, GET, /DeptLogo.gif, -, 

चूंकि यह अल्पविराम से अलग फ़ाइल से अधिक कुछ नहीं है, इसलिए आपके यहां जाने के कई अलग-अलग तरीके हैं। यदि आप अपनी मशीन पर स्थापित हैं तो आप Text::CSV का उपयोग कर सकते हैं। यदि नहीं, तो यहां एक साधारण उदाहरण है।

$VAR1 = { 
      '-' => [ 
        'GET /DeptLogo.gif' 
       ] 
     }; 

फिर आप जा सकते हैं और एक और फ़ाइल, या फ़ाइलों के समूह के लिए $user की सामग्री को लिख सकते हैं:

use strict; 
use warnings; 
use Data::Dumper; 

my $user = {}; # we will store the actions in here 

# This is what the log file looks like when split into an array 
# 0: Client IP address 
# 1: User name 
# 2: Date 
# 3: Time 
# 4: Service and instance 
# 5: Server name 
# 6: Server IP 
# 7: Time taken 
# 8: Client bytes sent 
# 9: Server bytes sent 
# 10: Service status code 
# 11: Windows status code 
# 12: Request type 
# 13: Target of operation 
# 14: Parameters 

open $log, '<', 'path/to/logfile.log'; 
while (my $line = <$log>) { 
    my @fields = split /, /, $line; # split on comma and space 
    # you'll get an array of actions for each user 
    push @{ $user->{$fields[1]} }, "$fields[12] $fields[13]"; 
    # or more specific: 
# push @{ $user->{$fields[1]} }, { 
#  'time' => $fields[3], 
#  'action' => $fields[12], 
#  'target' => $fields[13], 
# }; 
} 
close $log; 

print Dumper $user; # lets have a look 

# More stuff to do with the data here... 

यह उत्पादन होता है।

foreach my $u (sort keys %$user) { 
    print "$u\r\n"; 
    foreach $action (@{ $user->{$u} }) { 
    print "$action\r\n"; 
    } 
} 
+0

@Moe: अगर उत्तर स्वीकार्य नहीं है, तो कृपया बताएं कि क्यों, कोई भी आपकी समस्या में आगे बढ़ सकता है। –

संबंधित मुद्दे