Функция проверки ip зарезервированных адресов - PullRequest
1 голос
/ 26 октября 2011

У меня есть список IP-адресов.Я хочу знать, является ли какой-либо из них зарезервированным адресом (ref: http://en.wikipedia.org/wiki/Reserved_IP_addresses).Для своих работ я использую awk, поэтому мне интересно, есть ли какие-нибудь готовые сценарии оболочки или подобные, которые могли бы помочь мне в идентификации таких адресов.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2013

Если вы в качестве входных данных для скрипта вводите список старых добрых адресов IPv4 построчно

while IFS=. read A B C D
do  ADDR=`printf %03d.%03d.%03d.%03d $A $B $C $D`
    [[ 000.255.255.255 < $ADDR && $ADDR < 010.000.000.000 ]] && continue
    [[ 010.255.255.255 < $ADDR && $ADDR < 100.064.000.000 ]] && continue
    [[ 100.127.255.255 < $ADDR && $ADDR < 127.000.000.000 ]] && continue
    [[ 127.255.255.255 < $ADDR && $ADDR < 169.254.000.000 ]] && continue
    [[ 169.254.255.255 < $ADDR && $ADDR < 172.016.000.000 ]] && continue
    [[ 172.031.255.255 < $ADDR && $ADDR < 192.000.000.000 ]] && continue
    [[ 192.000.000.007 < $ADDR && $ADDR < 192.000.002.000 ]] && continue
    [[ 192.000.002.255 < $ADDR && $ADDR < 192.088.099.000 ]] && continue
    [[ 192.088.099.255 < $ADDR && $ADDR < 192.168.000.000 ]] && continue
    [[ 192.168.255.255 < $ADDR && $ADDR < 198.018.000.000 ]] && continue
    [[ 198.019.255.255 < $ADDR && $ADDR < 198.051.100.000 ]] && continue
    [[ 198.051.100.255 < $ADDR && $ADDR < 203.000.113.000 ]] && continue
    [[ 203.000.113.255 < $ADDR && $ADDR < 224.000.000.000 ]] && continue
    echo $A.$B.$C.$D is reserved
done

, он выдаст все зарезервированные адреса.

0 голосов
/ 26 октября 2011

Знаете ли вы о Unix grep?

Вы можете выполнить поиск grep для списка целевых строк, хранящихся в файле, в других ваших файлах.

 fgrep -f reservedList.txt yourListOfIpsSavedToAfile

напечатаетлюбые строки в yourList *, которые соответствуют любому слову, найденному в reservedList.

Если вы делаете это внутри сценария оболочки, вы можете сделать свои действия условными

 if fgrep -f reservedList.txt yourList > /dev/null 2>&1 ; then
    echo "found items in reserved List"
 else
    echo "no items found in reserved List"
 fi

Возможно, вам придется использоватьgrep -F reservedList .....Используйте первый пример выше, чтобы увидеть, как это работает, и, если нет, обратитесь к man grep, чтобы узнать, какие именно аргументы использовать в ваших версиях OS / grep.

Если вам действительно нужно сделать это в awk, вы в основном будете переделывать эту функцию в awk.

Надеюсь, это поможет.

...