[ОТВЕТИТЬ]
Опции темы
18.03.2010 10:46  
Pyatak
Имеем:
VARA=10.116.105.55
VARB=255.255.248.0

Нужно получить:
VARC=10.116.104.1

где:
VARA - адрес узла сети
VARB - маска сети
VARС - первый узел сети, который и нужно вычислить

всё это нужно сделать в скрипте.
Может кому попадалось что-то подобное?
Или хотя бы как сделать побитное AND двух чисел в скрипте? Я б тогда и сам навоял.
 
18.03.2010 11:24  
OlegON
Как-то не требовалось... Но рекомендую начать поиски отсюда
 
18.03.2010 11:52  
Pyatak
О, спасибо, полезный ресурс.
А задача решена пока только для частного случая, когда маска 255.255.255.0:

Код:
VARC=`echo "$VARA" | cut -d"." -f1,2,3`".1"
Возможно, более полно ее решать и не придется, однако, попозже попробую ради интереса.
 
18.03.2010 12:46  
vdm
Адрес порезать на части тем-же cut
Сложить так
c1=$(($a1 & $b1))
и т.п
 
18.03.2010 16:53  
Pyatak
Спасибо, vdm, то что нужно.
А вот и решение для общего случая:
Код:
IPADDR=10.16.129.5
IPMASK=255.255.252.0

IPA_A=`echo $IPADDR | cut -d"." -f1`
IPA_B=`echo $IPADDR | cut -d"." -f2`
IPA_C=`echo $IPADDR | cut -d"." -f3`
IPA_D=`echo $IPADDR | cut -d"." -f4`

IPM_A=`echo $IPMASK | cut -d"." -f1`
IPM_B=`echo $IPMASK | cut -d"." -f2`
IPM_C=`echo $IPMASK | cut -d"." -f3`
IPM_D=`echo $IPMASK | cut -d"." -f4`

IPGW=$((IPA_A & IPM_A))"."$((IPA_B & IPM_B))"."$((IPA_C & IPM_C))"."$(((IPA_D & IPM_D) + 1))
Только не красиво как-то, строк много.
 
 
Опции темы



Часовой пояс GMT +3, время: 12:53.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.