Страница 1 из 1

Изменение шейпов в зависимости от времени суток

Добавлено: 2007-06-12 10:05:45
ALF
Собственно сабж...
Есть идея, но не совсем достаточно опыта что бы ее реализовать.
Значит имееться две конторы. Роутер под FreeBSD 6.1 маршрутизация выполнена спомощью IPFW. В будние дни когда работают обе то все сегмент 192.168.1.х
пошейплен 256к, а другой 192.168.5.1 в 64к. Собственно вопрос заключаеться в том как сделать так что бы, допустим, в пятницу в 21 00 файрвол загрузился с новыми правилами и соответственно с новыми ограничениями и открыл бы на 2.х 256к!
Я впринципи догадываюсь что нужно юзать Cron, но как!?
Вот кое что накопал но осталось несколко непонятков...
Вот кусок из моих правил касающеся шейпов:

Код: Выделить всё

####Весь сегмент пошейплен 4мя мбитами
ipfw pipe 1 config bw 4Mbit/s
ipfw add pipe 1 ip from any to 192.168.5.0/24 out
ipfw add pipe 1 ip from 192.168.5.0/24 to any in
####Ограничени скорости на мировой трафик
ipfw 20 add pipe 20 ip from not "table(2)" to "table(1)" out 
ipfw 21 add pipe 21 ip from "table(1)" to not "table(2)" in
ipfw pipe 20 config mask dst-ip 0xffffffff bw 64Kbit/s
ipfw pipe 21 config mask src-ip 0xffffffff bw 64Kbit/s
####Ограничение на украниский
ipfw 30 add pipe 30 ip from "table(2)" to "table(1)" out
ipfw 31 add pipe 31 ip from "table(1)" to "table(2)" in
ipfw pipe 30 config mask dst-ip 0xffffffff bw 128Kbit/s
ipfw pipe 31 config mask src-ip 0xffffffff bw 128Kbit/s
В table2 у меня лежат адреса укр серверов...временами обновляю=)
А в table1 просто перечень IP адресов которым ограничеваеться скорость...
Мне подсказали что если я добавлю в свои правила такой кусок:

Код: Выделить всё

chour=`date '+%H'`
if [ ${chour} -lt 8 ]; then
####Ограничени скорости на мировой трафик
    ipfw 20 add pipe 20 ip from not "table(2)" to "table(1)" out 
    ipfw 21 add pipe 21 ip from "table(1)" to not "table(2)" in
    ipfw pipe 20 config mask dst-ip 0xffffffff bw 256Kbit/s
    ipfw pipe 21 config mask src-ip 0xffffffff bw 256Kbit/s
####Ограничение на украниский
    ipfw 30 add pipe 30 ip from "table(2)" to "table(1)" out
    ipfw 31 add pipe 31 ip from "table(1)" to "table(2)" in
    ipfw pipe 30 config mask dst-ip 0xffffffff bw 512Kbit/s
    ipfw pipe 31 config mask src-ip 0xffffffff bw 512Kbit/s
fi
if [ ${chour} -ge 22 ]; then

####Ограничени скорости на мировой трафик
    ipfw 20 add pipe 20 ip from not "table(2)" to "table(1)" out 
    ipfw 21 add pipe 21 ip from "table(1)" to not "table(2)" in
    ipfw pipe 20 config mask dst-ip 0xffffffff bw 256Kbit/s
    ipfw pipe 21 config mask src-ip 0xffffffff bw 256Kbit/s
####Ограничение на украниский
    ipfw 30 add pipe 30 ip from "table(2)" to "table(1)" out
    ipfw 31 add pipe 31 ip from "table(1)" to "table(2)" in
    ipfw pipe 30 config mask dst-ip 0xffffffff bw 512Kbit/s
    ipfw pipe 31 config mask src-ip 0xffffffff bw 512Kbit/s
fi
И буду перестартовывать првила в 8:01 и в 21:01 то это будет работать...Единственно для меня оставлись непонятынми вот эти строки с условием "[ ${chour} -lt 8 ];" "[ ${chour} -ge 22 ]; " что они значат а именно вот эти части "-lt" "-ge" и почему правила там надо одинаковые...
И как можно от крона получить день недели!? Для условия на выходные=)
Прсто я уже начал копать в этом напрвавлении. Уже много прочитал, но пока увы...
Поделитесь идеями...и не судите строго;-)

Добавлено: 2007-06-12 10:29:53
dikens3
http://gazette.linux.ru.net/rus/article ... l[code]-gt больше
if [ "$a" -gt "$b" ]

-lt меньше
if [ "$a" -lt "$b" ][/code]Ещё есть у лиссяры на сайте про sh:
http://www.lissyara.su/?id=1075

По крону:
http://www.codenet.ru/webmast/php/cron.php

+ google

Добавлено: 2007-06-12 10:53:39
Alex Keda
http://www.lissyara.su/?id=1127
второй конфиг

Добавлено: 2007-06-12 11:43:21
ALF
Спс большое, почитал... обмозговал
Но один вопрос до сиз пор актуальный:
И как можно от крона получить день недели!? Для условия на выходные=)как я представляю что то вроде:

Код: Выделить всё

if [<незвестное мне что-то=)> == Mon]; then
      <кусок из правил>
fi

Добавлено: 2007-06-12 11:59:54
Alex Keda

Код: Выделить всё

man date
если мне не изменяет память.
тока это тебе надо не от крона, а от шелла, если я правильно понимаю ход решения задачи.

Добавлено: 2007-06-12 17:35:55
Гость
lissyara писал(а):

Код: Выделить всё

man date
тока это тебе надо не от крона, а от шелла, если я правильно понимаю ход решения задачи.
Та да тупанул.... :oops:
Блин чет не очень получаеться=(

Добавлено: 2007-06-12 17:37:18
ALF
Это я был... Думал что запомнило=)

Добавлено: 2007-06-12 17:42:02
Alex Keda
хе - навскидку я тоже не скажу, у меня не было такой задачи (тем более - что крон сам умеет день недели - man crontab - чем я всю жизнь и пользовался).
ну а читать з тебя man date - нет времени...
==========
опять же - "не получается" - показывай как пробовал и что получилось.

Добавлено: 2007-06-12 18:26:05
ALF
Мля я болван!
Наконецто....

Код: Выделить всё

date +%A
От блин... Вот ток вопрос как прально в шеле сравнение сделать :oops:

Добавлено: 2007-06-12 19:06:18
Alex Keda
dikens3 писал(а): http://www.lissyara.su/?id=1075

Добавлено: 2007-06-12 22:53:01
dikens3
Твой верхний пост о чём мне должен сказать?

Добавлено: 2007-06-12 23:16:54
Alex Keda
dikens3 писал(а):Твой верхний пост о чём мне должен сказать?
чей? тредстартера или мой?
Если мой - то не тебе, а автору топика - где искать про сравнение...