LINUX.ORG.RU

История изменений

Исправление Zmicier, (текущая версия) :

Скриптописательство осваиваю

А, ну это дело благородное. Тогда показываю:

#!/bin/bash

dec2abcd () {
    local dec="$1" abcd
    for i in {3..0}; do
        (( abcd[i] = dec / 256 ** i,
           dec %= 256 ** i ))
    done
    echo "${abcd[3]}.${abcd[2]}.${abcd[1]}.${abcd[0]}"
}

IFS='./' read a d c d m <<< "$1"

(( ip = a * 256 ** 3 + b * 256 ** 2 + c * 256 + d,
   hosts = 2 ** (32 - m),
   mask = 2 ** 32 - hosts,
   net = ip & mask ))

for (( host = net + 1; host < net + hosts - 1; host++ )); do
    dec2abcd "$host"
done

Работает как-то так:

$ ipmask2iplist 192.168.12.56/22
192.0.12.1
192.0.12.2
<пропуск>
192.0.15.253
192.0.15.254

Хочу скрипт, который...

Не вникал.

Исходная версия Zmicier, :

Скриптописательство осваиваю

А, ну это дело благородное. Тогда показываю:

#!/bin/bash

dec2abcd () {
    local dec="$1" abcd
    for i in {3..0}; do
        (( abcd[i] = dec / 256 ** i,
           dec %= 256 ** i ))
    done
    echo "${abcd[3]}.${abcd[2]}.${abcd[1]}.${abcd[0]}"
}

IFS='./' read a d c d m <<< "$1"

(( ip = a * 256 ** 3 + b * 256 ** 2 + c * 256 + d,
   hosts = 2 ** (32 - m),
   mask = 2 ** 32 - hosts,
   net = ip & mask ))

for (( host = net + 1; host < net + hosts - 1; host++ )); do
    dec2abcd host
done

Работает как-то так:

$ ipmask2iplist 192.168.12.56/22
192.0.12.1
192.0.12.2
<пропуск>
192.0.15.253
192.0.15.254

Хочу скрипт, который...

Не вникал.