বাশ: সক্রিয় আইপি অ্যাড্রেসগুলির বিপরীতে ডিএনএস লুকআপ up


11

আমার কাছে একটি লাইন কমান্ড রয়েছে যা ওয়েব সার্ভার অ্যাক্সেস লগ থেকে শীর্ষ 10 সক্রিয় আইপি ঠিকানাগুলি তালিকাভুক্ত করে:

cat access.log | awk '{print $1}' | sort | uniq -c | sort -n | tail -n10

একটি নমুনা ফলাফল সেট (সরলতার জন্য কেবল 3 টি প্রবেশিকা সহ) হবে:

20 12.34.56.7
22 3.67.89.201
29 9.0.203.255

আপনি দেখতে পাচ্ছেন, গণনাটি আইপি ঠিকানার আগে, দুটি ফাঁকা জায়গায় পৃথক করে। গণনার আগেও অনেকগুলি ফাঁকা জায়গা রয়েছে তবে আমি সেগুলি এখানে দেখানোর জন্য পাচ্ছি না।

আমি আইপি ঠিকানার বিপরীত ডিএনএস লুকোচুরি করতে চাই যাতে এটি এর মতো দেখায়:

20 12.34.56.7 (d12-34-56-7.abhsia.telus.net)
22 3.67.89.201 (customer.vpls.net)
29 9.0.203.255 (9-0-203-255.hlrn.qwest.net)

আমি কোনও স্ক্রিপ্ট অবলম্বন না করে এটি কীভাবে করতে পারি (এটি একটি লাইন কমান্ডের সাথে লেগে থাকে)? কোন পরামর্শ অনেক প্রশংসা করা হয়।

উত্তর:


16

আপনি dig +noall +answer -x <IP>একটি আইপি ঠিকানা সন্ধান করতে ব্যবহার করতে পারেন।

আইপি অ্যাড্রেসের একটি তালিকা রয়েছে এমন কোনও ফাইলের উপরে কেবল লুপ করতে:

while read ip; do dig +noall +answer -x $ip; done < ips.txt

অথবা, আপনার গণনা কমান্ডের আউটপুটটি পাইপ করুন। এবার আমরা গণনা এবং আইপি অ্যাড্রেসগুলি আলাদাভাবে পেয়েছি এবং তারপরে সেগুলি একটি লাইনে মুদ্রণ করব:

cat access.log | awk '{print $1}' | sort | 
uniq -c | sort -n | tail -n10 |
while read count ip; do printf "%d " $count; printf "%s " $ip; dig +noall +answer -x $ip; done

উদাহরণ (ইউইউসির জন্য দুঃখিত):

cat test | while read count ip; do printf "%d " $count; printf "%s " $ip; dig +noall +answer -x $ip; done
20 8.8.8.8 8.8.8.8.in-addr.arpa.    52767   IN  PTR google-public-dns-a.google.com.
22 8.8.4.4 4.4.8.8.in-addr.arpa.    61369   IN  PTR google-public-dns-b.google.com.

digকেবলমাত্র হোস্টের নাম পেতে আপনি পাইপের আউটপুটটিকে আরও বিশ্রী করে তুলতে পারেন :

cat test | while read count ip; do printf "%d " $count; printf "%s " $ip; echo $(dig +noall +answer -x $ip | awk '{ print $(NF) }'); done
20 8.8.8.8 google-public-dns-a.google.com.
22 8.8.4.4 google-public-dns-b.google.com.

প্রম্পট প্রতিক্রিয়া জন্য ধন্যবাদ! যাইহোক, এবার আমি খনন থেকে কেবল আউটপুট পাই এবং আমি গণনা হারাতে পারি। পছন্দসই আউটপুট হবে: <গণনা> <IP ঠিকানা> <বিপরীত DNS খোঁজ>
GooDoo

এটি পরিবর্তন করা বেশ সহজ যেহেতু whileহোয়াইটস্পেসের উপর ভিত্তি করে ইনপুটটি বিভক্ত করে, তাই আপনি পৃথকভাবে গণনা এবং আইপি ঠিকানা পড়তে পারেন। আমার আপডেট দেখুন। digআউটপুট পরিবর্তন করতে আপনি বিকল্পগুলির সাথে খেলতে পারেন — আমি এটি সত্যিই ব্যবহার করি নি।
slhck

ধন্যবাদ! আমি কিছু পরিবর্তন করেছি এবং এখন এটি যা আমি খুঁজছি: cat access.log | awk '{print $1}' | sort | uniq -c | sort -n | sed "s/^[ \t]*//" | tail -n10 | while read count ip ; do echo "$count " "$ip" "( $(dig +noall +answer -x $ip | awk '{ print $(NF) }') )"; doneআপনার দয়াবান সহায়তার প্রশংসা করুন!
গুডু

for i in `cat input.txt` ; do dig +noall +answer -x $i ; done >> output.txt

+1 তবে বিটিডব্লু, xargs ব্যবহার করে ("xargs - স্ট্যান্ডার্ড ইনপুট থেকে কমান্ড লাইন তৈরি এবং cat file | xargs -n1 dig +noall +answer -x
সম্পাদন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.