Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: tuxmartin 26. 08. 2019, 20:29:48
-
Ahoj,
snazim se prevest rozsahy IPv4 a IPv6 adres na CIDR format - adresaSite/prefix(maska).
Ukazkovy vstup:
108.170.192.0-108.170.255.255
2620:E7:4000::-2620:E7:4000:FFFF:FFFF:FFFF:FFFF:FFFF
Pozadovany vystup:
108.170.192.0/18
2620:E7:4000::/48
a co mi to (ne)dela:
martin@martin:~$ ipcalc "108.170.192.0-108.170.255.255" | sed '2!d'
108.170.192.0/18
martin@martin:~$ ipcalc "2620:E7:4000::-2620:E7:4000:FFFF:FFFF:FFFF:FFFF:FFFF" | sed '2!d' # na ubuntu 16.04
INVALID ADDRESS2: 2620:E7:4000:FFFF:FFFF:FFFF:FFFF:FFFF
martin@martin:~$
martin@martin:~$ ipcalc "2620:E7:4000::-2620:E7:4000:FFFF:FFFF:FFFF:FFFF:FFFF" | sed '2!d' # na ubuntu 18.04
ipcalc: bad IPv6 address: 2620:E7:4000::-2620:E7:4000:FFFF:FFFF:FFFF:FFFF:FFFF
Jak se da v shellu rozsahu IPv6 adres prevest na tvar sit/prefix?
Me uz dosly napady :-(
-
Příkaz ipcalc počítá jen s IPv4. Zkuste najít nějaký jiný nástroj, který bude umět (i) IPv6, Google poradil třeba subnetcalc.
-
Příkaz ipcalc počítá jen s IPv4. Zkuste najít nějaký jiný nástroj, který bude umět (i) IPv6, Google poradil třeba subnetcalc.
Proto jsem prave daval ukazku ubuntu 16.04 a 18.04. V 18.04 uz ipcalc umi IPv6:
NAME
ipcalc - perform simple manipulation of IP addresses
SYNOPSIS
ipcalc [OPTION]... <IP address>[/prefix] [netmask]
DESCRIPTION
ipcalc provides a simple way to calculate IP information for a host. The various options specify what information ipcalc should display on standard out. Multiple options may be
specified. An IP address to operate on must always be specified. Most operations also require a netmask or a CIDR prefix as well.
OPTIONS
-c, --check
Validate the IP address under the specified family. If no address family is specified, IPv4 is assumed.
-4, --ipv4
Specify IPv4 address family (default).
-6, --ipv6
Specify IPv6 address family.
subnetcalc chce vstup ve tvaru IP prefix :-(
subnetcalc 2a00:1450:8007::69 64
Uz jsem tech programu zkusil hodne a zatim zadny nefunguje.
-
$ python3
>>>from netaddr import *
>>>from pprint import *
>>>a = IPRange("2620:E7:4000::","2620:E7:4000:FFFF:FFFF:FFFF:FFFF:FFFF")
>>>pprint(a)
IPRange('2620:e7:4000::', '2620:e7:4000:ffff:ffff:ffff:ffff:ffff')
>>>pprint(a.cidrs())
[IPNetwork('2620:e7:4000::/48')]
-
http://www.potato-people.com/blog/2009/02/ipv6-subnet-size-reference-table/
-
$ python3
>>>from netaddr import *
>>>from pprint import *
>>>a = IPRange("2620:E7:4000::","2620:E7:4000:FFFF:FFFF:FFFF:FFFF:FFFF")
>>>pprint(a)
IPRange('2620:e7:4000::', '2620:e7:4000:ffff:ffff:ffff:ffff:ffff')
>>>pprint(a.cidrs())
[IPNetwork('2620:e7:4000::/48')]
Skvele, funguje. Diky!