आईपीएल 4 पतों की एक श्रृंखला का उपयोग करके नेटमैक्स को बैश का उपयोग करते हुए संबोधित करें


10

मेरे पास IPv4 पतों वाली एक इनपुट फाइल है:

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

@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

@ ओलेक्सी हमेशा एक खुशी :)
Zanna

3

शायद आश्चर्य नहीं कि इसके लिए CPAN perl मॉड्यूल नेट :: CIDR है।

उदाहरण के लिए:

$ 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पैकेज स्थापित करके मॉड्यूल उबंटू पर उपलब्ध है ।

NB मैंने आपके इनपुट या परिणामों को मान्य नहीं किया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.