ব্যাশ ব্যবহার করে নেটমাস্কে আইপিভি 4 অ্যাড্রেসের একটি পরিসর রূপান্তর করা


10

আইপিভি 4 অ্যাড্রেস সহ আমার একটি ইনপুট ফাইল রয়েছে:

94.228.16.0 - 94.228.25.255
94.241.136.0/24
94.241.136.0 - 94.241.136.255
94.29.128.0/17
94.29.128.0 - 94.29.191.0
94.29.192.0 - 94.29.255.0
94.74.181.0/24
94.74.181.0 - 94.74.181.31
94.74.181.128 - 94.74.181.255

আমি কীভাবে ঠিকানা রেঞ্জগুলি নেটমাস্কে রূপান্তর করতে পারি? ফলাফলটি হওয়া উচিত:

94.228.16.0/21
94.241.136.0/24
94.241.136.0/24
94.29.128.0/17
94.29.128.0/19
94.29.192.0/19
94.74.181.0/24
94.74.181.0/27
94.74.181.128/25

3
আপনি যে ফলাফলগুলির জন্য জিজ্ঞাসা করেছেন তার বেশ কয়েকটিগুলি ভুল, সুতরাং কোনও বৈধ বাশ স্ক্রিপ্ট সেগুলি তৈরি করবে না। উদাহরণস্বরূপ, প্রথম পরিসীমা নেটমাস্ক ব্যবহার করে প্রকাশযোগ্য নয়: 94.228.16.0/21 94.228.16.0 - 94.228.23.255 দেয় এবং পরবর্তী প্রশস্ত 94.228.16.0/20 94.228.16.0 - 94.228.31.255 দেয়। এছাড়াও, .0 এ শেষ রেঞ্জগুলি কোনও নেটমাস্ক দ্বারা উত্পাদিত হতে পারে না।
zwets

@ জান্না আপনি প্রতারণা করছেন, পোস্টার ব্যাশ ব্যবহার করে জিজ্ঞাসা করলেন । আমার ipcalcবাশের কোনও বিল্টিন নেই। ;-)
zwets

@ জ্যোয়েটস আহ আমি এটিকে বের করে ফেলেছি! তবে আপনি ঠিক বলেছেন, শেলটির অনেক সাহায্য দরকার হাহাহা
জান্না

উত্তর:


14

রূপান্তরটি করতে প্রথমে আপনাকে একটি প্যাকেজ ইনস্টল করতে হবে

sudo apt install ipcalc

এখন আপনি এই ছোট স্ক্রিপ্টটি দিয়ে এটি করতে পারেন (দয়া করে নোট করুন যে আপনি যদি ভেরিয়েবলটি উদ্ধৃত করেন তবে এটি কাজ করে না):

$ while read line; do if [[ $line = *-* ]]; then (ipcalc $line | sed '2!d'); else echo $line; fi; done < file
94.228.16.0/21
94.241.136.0/24
94.241.136.0/24
94.29.128.0/17
94.29.128.0/19
94.29.192.0/19
94.74.181.0/24
94.74.181.0/27
94.74.181.128/25

বা আরও সহজেই পাঠযোগ্য

while read line; do
   if [[ $line = *-* ]]; then 
     (ipcalc $line | sed '2!d')
   else echo $line
   fi
done < file

@ ওলেকসী সর্বদা একটি আনন্দ :)
জান্না

3

সম্ভবত অবাক হওয়ার মতো বিষয় নয়, এর জন্য একটি সিপিএন পার্ল মডিউল নেট :: সিআইডিআর রয়েছে

উদাহরণস্বরূপ:

$ perl -MNet::CIDR=range2cidr -lne 'print for range2cidr $_' yourfile
94.228.16.0/21
94.228.24.0/23
94.241.136.0/24
94.241.136.0/24
94.29.128.0/17
94.29.191.0/32
94.29.128.0/19
94.29.160.0/20
94.29.176.0/21
94.29.184.0/22
94.29.188.0/23
94.29.190.0/24
94.29.255.0/32
94.29.192.0/19
94.29.224.0/20
94.29.240.0/21
94.29.248.0/22
94.29.252.0/23
94.29.254.0/24
94.74.181.0/24
94.74.181.0/27
94.74.181.128/25

libnet-cidr-perlপ্যাকেজ ইনস্টল করে মডিউলটি উবুন্টুতে উপলব্ধ ।

বিশেষ দ্রষ্টব্য আমি আছে না আপনার ইনপুট অথবা ফলাফল যাচাই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.