Генерация списка уникальных ipv6 адресов

Если стоит задача генерировать список ipv6 адресов из сети ipv6 /36 что бы были уникальные сети /48 можно воспользоваться скриптом:


#!/bin/bash


array
=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )
MAXCOUNT
=4000
count
=1
network
=2a0a:7740:1 # your ipv6 network prefix
len
=4

rnd_ip_block
()
{
    b
=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    c
=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    d
=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    e
=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    f
=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    echo $sub_network
:$b:$c:$d:$e:$f
}

#echo "$MAXCOUNT случайных IPv6:"
#echo "-----------------"
while [ "$count" -le $MAXCOUNT ]        # Генерация 20 ($MAXCOUNT) случайных чисел.
do
        a
=`echo 'ibase=10;obase=16;'$count | bc | tr '[:upper:]' '[:lower:]'`
       
if [ ${#a} -lt $len ]
       
then
        t
=$[$len-${#a}]
        i
=1
       
while [ $i -lt $t ]; do
        a
="0"$a
        let
"i += 1"
       
done
       
fi
        sub_network
=$network$a
        rnd_ip_block
        let
"count += 1"                # Нарастить счетчик.
       
done


Для работы скрипта может потребоваться установить пакет bc

apt install bc -y 

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.