অবস্থা:
আমার কাছে বেশ কয়েকটি ঘন্টা নেটওয়ার্ক ক্যাপচার থেকে আইপি ঠিকানা এবং পোর্ট সহ একটি বড় ফাইল (কয়েক মিলিয়ন লাইন) রয়েছে, প্রতি লাইনে একটি আইপি / পোর্ট। লাইনগুলি এই ফর্ম্যাটটিতে রয়েছে:
ip.ad.dre.ss[:port]
কাঙ্ক্ষিত ফলাফল:
লগ ইন করার সময় আমি প্রাপ্ত প্রতিটি প্যাকেটের জন্য একটি এন্ট্রি রয়েছে, তাই এখানে অনেকগুলি সদৃশ ঠিকানা রয়েছে। আমি এটি কোনও ধরণের শেল স্ক্রিপ্টের মাধ্যমে এটি চালাতে সক্ষম হতে চাই যা এটি বিন্যাসের লাইনে হ্রাস করতে সক্ষম হবে
ip.ad.dre.ss[:port] count
যেখানে count
নির্দিষ্ট ঠিকানা (এবং পোর্ট) এর সংখ্যার সংখ্যা। কোনও বিশেষ কাজ করতে হবে না, বিভিন্ন বন্দরকে আলাদা ঠিকানা হিসাবে বিবেচনা করুন।
এখনও অবধি, আমি লগ ফাইল থেকে সমস্ত আইপি ঠিকানাগুলি স্ক্র্যাপ করতে এই কমান্ডটি ব্যবহার করছি:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
সে থেকে, আমি আমার ঠিকানায় প্রেরিত সমস্ত আইপি ঠিকানার (যা সম্পর্কে আমি যত্নশীল নই) সরিয়ে ফেলতে মোটামুটি সরল রেজেেক্স ব্যবহার করতে পারি
তারপরে আমি অনন্য এন্ট্রিগুলি নিষ্কাশন করতে নিম্নলিখিতটি ব্যবহার করতে পারি:
sort -u ips.txt > intermediate.txt
আমি জানি না কীভাবে আমি কোনওভাবে বাছাই করে লাইনটি গণনা করতে পারি।
-bgr
কাকতালীয়ভাবে স্মৃতিচারণের মতো দেখতে কেমন লাগেbigger
, যা আমরা শীর্ষে চাই।