2011-11-17 18 views
13

मुझे विशिष्ट संदिग्ध पैटर्न (जैसे SQL इंजेक्शन) देखने के लिए अपाचे लॉग फ़ाइल को पार्स करने की आवश्यकता है।अपाचे grep बड़ी लॉग फ़ाइल

उदाहरण के लिए मैं id='%20or%201=1;

के लिए देख रहा हूँ मैं इस पैटर्न (और अन्य) के लिए लॉग फ़ाइल की जाँच करने के ग्रेप उपयोग कर रहा हूँ और क्योंकि इन लॉग विशाल हैं यह

यहाँ समय की एक लंबी राशि लेता है मेरे आदेश:

grep 'id=' Apache.log | egrep "' or|'%20" 

वहाँ एक अच्छा है या एक तेजी से विधि या कमांड मैं तेजी से खोज बनाने के लिए उपयोग की जरूरत है?

उत्तर

22

स्टार्टर्स के लिए, आपको grep आउटपुट egrep पर पाइप करने की आवश्यकता नहीं है।

इससे आपको थोड़ा प्रदर्शन बढ़ सकता है। यदि आप नियमित अभिव्यक्तियों के बजाय निश्चित तारों की तलाश कर सकते हैं, तो इससे भी मदद मिल सकती है। आप -F विकल्प के साथ एक निश्चित स्ट्रिंग देखने के लिए ग्रेप बता सकते हैं:

grep -F "id='%20or" apache.log 

लेकिन का उपयोग कर तय तार आप को बहुत लचीलापन खो देते हैं।

+0

मुझे यह – aki

+0

धन्यवाद करने का प्रयास करें धन्यवाद, यह मेरे कोड से 21 मिनट कम है – aki

0

मुझे लगता है कि डिस्क से डेटा प्राप्त करते समय आपका अधिकांश समय व्यतीत होता है (CPU उपयोग अधिकतम नहीं होता है)। फिर आप एक क्वेरी अनुकूलित नहीं कर सकते हैं। आप केवल एक अलग फ़ाइल में दिलचस्प लाइनों को लॉग इन करने का प्रयास कर सकते हैं ....

0

क्या आप grep -E "id=(' or|'%20)" apache.log देख रहे हैं?

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