Что означает значение переменной bits? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь получить префикс из маски подсети, код выглядит следующим образом:

mask=255.255.254.0

oct1=$(echo $mask | awk -F. '{print $1}')
oct2=$(echo $mask | awk -F. '{print $2}')
oct3=$(echo $mask | awk -F. '{print $3}')
oct4=$(echo $mask | awk -F. '{print $4}')

for i in {1..4}; do
  for j in {7..0}; do
    bits=$((oct$i & ((1 << $j)) ? 1 : 0))
    ((prefix += $bits))
  done
done
echo $prefix

Это на самом деле работает, но я не знаю, что означает значение битов переменной илиделает.

1 Ответ

0 голосов
/ 04 января 2019

Переменная битов подсчитывает количество бит в каждом октете вашей маски ... она выражает маску подсети в количестве битов, которое можно использовать в нотации CIDR.

Пример 192.168.1.1 сподсеть 255.255.254.0 в нотации CIDR - 192.168.1.1/23.Каждый октет маски подсети представляет собой полный байт (или 8 бит).255 = все 8 бит включены.Таким образом, 255.255.254.0 - это 255 (8 бит) + 255 (8 бит) + 254 (7 бит) + 0 (0 бит) = 23 включенных бита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...