Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2021-02-05 13:23:36

  DeWu - Użytkownik

DeWu
Użytkownik
Zarejestrowany: 2013-03-26

bc znowu

Hej
Próbuję sobie wyliczyć CIDR dla sieci IP zawierającej np. 256 hostów. Robię to za pomoca bc i dostaję output:

Kod:

echo "32-l(256)/l(2)" | bc -l
23.99999999999999999993

Co zrobić, żeby prawidłowo wyświetlało się 24?

Offline

 

#2  2021-02-05 14:51:06

  Pakos - Członek DUG

Pakos
Członek DUG
Zarejestrowany: 2007-06-12
Serwis

Re: bc znowu

Kod:

echo "32-l(256)/l(2)/1" | bc -l | xargs printf %.0f

Online

 

#3  2021-02-06 04:42:22

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: bc znowu

Próbuję sobie wyliczyć CIDR dla sieci IP zawierającej np. 256 hostów. Robię to za pomoca bc i dostaję output:

Masz do tego w repo gotowiusiego ipcalc.
np:

#~> ipcalc 192.168.1.1/24

Address:   192.168.1.1          11000000.10101000.00000001. 00000001
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.1.0/24       11000000.10101000.00000001. 00000000
HostMin:   192.168.1.1          11000000.10101000.00000001. 00000001
HostMax:   192.168.1.254        11000000.10101000.00000001. 11111110
Broadcast: 192.168.1.255        11000000.10101000.00000001. 11111111
Hosts/Net: 254

Sznurek do programu:
http://jodies.de/ipcalc

Także kopać z sandała w otwarte drzwi nie musisz.
xD

Pozdro

Ostatnio edytowany przez Jacekalex (2021-02-06 04:44:16)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2021-02-06 22:28:15

  DeWu - Użytkownik

DeWu
Użytkownik
Zarejestrowany: 2013-03-26

Re: bc znowu

Tylko  że ja chcę zadziałać w drugą stronę. Mam dane, że sieć to 192.168.1.0 i zawiera 256 adresów a jako output chcę otrzymać 192.168.1.0/24

Offline

 

#5  2021-02-07 07:11:07

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: bc znowu

DeWu napisał(-a):

Tylko  że ja chcę zadziałać w drugą stronę. Mam dane, że sieć to 192.168.1.0 i zawiera 256 adresów a jako output chcę otrzymać 192.168.1.0/24

Proszę uprzejmie:

Kod:

ipcalc 192.168.1.0 - 192.168.1.255
deaggregate 192.168.1.0 - 192.168.1.255
192.168.1.0/24

albo:

Kod:

ipcalc 192.168.1.0 - 192.168.1.221
deaggregate 192.168.1.0 - 192.168.1.221
192.168.1.0/25
192.168.1.128/26
192.168.1.192/28
192.168.1.208/29
192.168.1.216/30
192.168.1.220/31

Przy czym z 256 adresami w Ipv4 trafiłeś kulą w plot, bo adres sieci, adres bramy domyślnej   i broadcast zeżrą Ci 3 adresy, wiec dostępne opcje to 253 przy masce 24 albo 509 przy masce 23.

Jak już chcesz rzeźbić skrypty do adresów IP, to radziłbym pobawić się Ipv6,
powodem jest fakt, że Ipv4 stało się w Europie anachronizmem z chwilą, kiedy w RIPE skończyły się wolne adresy.

W tej chwili w Polsce łatwiej kupić komplet dwóch nerek od jednego dawcy,
niż paczkę publicznych adresów Ipv4 z maską 24.

Pozdro

Ostatnio edytowany przez Jacekalex (2021-02-07 07:14:09)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2021-02-07 16:09:15

  DeWu - Użytkownik

DeWu
Użytkownik
Zarejestrowany: 2013-03-26

Re: bc znowu

A co to ma do rzeczy skoro mam tylko plik csv z zerowym adresem i ilością adresów w posieci? Jedyne co mi przyszło do głowy to logarytmowanie. Plik wygląda tak:

Kod:

31.41.24.0;2048
31.41.80.0;2048
31.41.136.0;2048
31.41.144.0;1024
31.41.148.0;1024

a na wyjściu potrzebuję uzyskać:

Kod:

31.41.24.0/21
31.41.80.0/21
31.41.136.0/21
31.41.144.0/22
31.41.148.0/22

Offline

 

#7  2021-02-07 17:46:18

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: bc znowu

Czyli masz w tym csv ilości adresów typu 1024 albo 2048?
1024 to 2^10, 2048 to 2^11.
A więc 32 - (uzyskana potęga liczby 2 i gotowe).

bc umie czytać CSV?
Ja bym wziął pewnie perla.

O adresach w CSV dowiedziałem się z ostatniego Twojego postu.
W każdym razie, jak jedziesz z bc, to oznacza skrypt powłoki, perle czy pythony lepiej sobie radzą
z plikami CSV/XML/JSON czy bazami SQL.

Pozdro


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)