IPB

Здравствуйте, гость ( Вход | Регистрация )

-->
 
Ответить в эту темуОткрыть новую тему
> Офисный билинг на Микротике
shdn777
сообщение 29.8.2010, 10:46
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 8
Регистрация: 8.2.2010
Пользователь №: 811



Сильно понравился Микротик поставил в конторе но понадобилось ограничивать пользователей по объему закачки за разный период времени (день неделя месяц) и создавать отчеты за разный период.
Вот наваял на коленке - представляю вам .

Билинг используется user-manager и ограничивает VPN (pppoe pptp) я использую pppoe .
Сначала нужно настроить user-manager и завести пользователей вот методичка
http://wiki.mikrotik.com/wiki/User_Manager/PPP_Example - проверить что пользователи заходят через пользователей заведенных в user-manager - ограничение я прописываю в не используемое мной поле Group:(в настройках пользователя) - И так первый символ это "d","w","m"(день неделя месяц соответственно) последующие символы это числа объем трафика например
Group: d100 (100Мб в день)
Group: m400 (400Мб в месяц)
Group: w25 (25Мб в неделю)

Весь билинг состоит из 2х скриптов которые запускаются раз в день BillingResDM и раз в неделю BillingResW


#BillingResDM
:local date
:local day
:local month
:local year
:local yeardiv
:local yearmult
:local leapyear
:local lastday
:global foundlastday
:set date [system clock get date]
:set month [:pick $date 0 3]
:set day [:pick $date 4 6]
:set year [:pick $date 7 11]
:set yeardiv ($year / 4)
:set yearmult ($yeardiv * 4)
:if ([$yearmult] = $year) do={ :set leapyear true } else={ :set leapyear false }
:if ([$month] = "jan") do={ :set lastday 31 }
:if ([$month] = "feb") do={
:if ($leapyear = true) do={ :set lastday 29 }
:if ($leapyear = false) do={ :set lastday 28 } }
:if ([$month] = "mar") do={ :set lastday 31 }
:if ([$month] = "apr") do={ :set lastday 30 }
:if ([$month] = "may") do={ :set lastday 31 }
:if ([$month] = "jun") do={ :set lastday 30 }
:if ([$month] = "jul") do={ :set lastday 31 }
:if ([$month] = "aug") do={ :set lastday 31 }
:if ([$month] = "sep") do={ :set lastday 30 }
:if ([$month] = "oct") do={ :set lastday 31 }
:if ([$month] = "nov") do={ :set lastday 30 }
:if ([$month] = "dec") do={ :set lastday 31 }
:if ([$lastday] = $day) do={ :set foundlastday true } else={ :set foundlastday false }
/tool user-manager user
:global typebill
:global userlimit
:foreach i in=[ /tool user-manager user find subscriber=admin ] do={
:set userlimit ([:pick [/ tool user-manager user get $i group] 1 [:len [/ tool user-manager user get $i group]] ]*1048576)
:set typebill [:pick [/ tool user-manager user get $i group] 0]
:if ($typebill = "d") do={reset-counters [get $i name];enable [get $i name];/ tool user-manager user set [get $i name] download-limit=$userlimit}
:if ($typebill = "m") do {:if ($foundlastday = true) do={reset-counters [get $i name];/ tool user-manager user set [get $i name] download-limit=$userlimit}}
}

#BillingResW
/tool user-manager user
:global typebill
:global userlimit
:foreach i in=[ /tool user-manager user find subscriber=admin ] do={
:set userlimit ([:pick [/ tool user-manager user get $i group] 1 [:len [/ tool user-manager user get $i group]] ]*1048576)
:set typebill [:pick [/ tool user-manager user get $i group] 0]
:if ($typebill = "w") do={reset-counters [get $i name];/ tool user-manager user set [get $i name] download-limit=$userlimit}
}

Отчеты за разный диапазон прекрасно просматриваются в user-manager .
Все писалось и обкатывалось на RB750 Mikrotik 4.10
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Yoshio
сообщение 3.11.2010, 12:11
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 1
Регистрация: 3.11.2010
Пользователь №: 1 049



Очень развернутый скрипт. Особенно касательно вычисления последних дней месяца. Однако никак не могу дать ума User manager. Юзеры либо ходят просто так либо не получается pppoe авторизация. Либо нет пользователя либо еще какая хрень..
Пытался делать DHCP авторизацию тоже засада все ходят мимо user managera, то есть инет на машинах есть но в us-man статус не меняется нет активных ...

Получилось завести HotSpot из winboxa и что еще там здорово, есть сумарный лимит (дело в том что у нашего прова считается весь трафик и вниз и наверх), но сбрасывать couners на usera][ по расписанию в последний день месяца не получается.
Нет в shedullere кроме часов ничего... Можно повторять раз в 96 часов и лимит поставить примерный но все равно к первым числам месяца привязки не будет...

Скриптолог из меня никакой... я больше на слесаря тяну компутерного....

Научите, О великие Скрипто-писатели! Как мне делать

ip hotspot user reset-counter

в последний день месяца....
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
shdn777
сообщение 3.11.2010, 16:33
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 8
Регистрация: 8.2.2010
Пользователь №: 811



Вычисление последнего дня месяца взял отсюда http://wiki.mikrotik.com/wiki/AutomatedBilling хотя сейчас уже переделал по своему - определяется не последний а первый день месяца и запускается соответственно 0.05 мин каждый день (скрипт стал в 3 раза короче)

А про user manager - главное понять что это простой RADIUS и настраивать и обращаться соответственно - к стати hotspot тоже прекрасно работает с user manager
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ToXaNSK
сообщение 13.11.2010, 12:31
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 6.11.2010
Пользователь №: 1 052



Цитата(shdn777 @ 3.11.2010, 16:33) *

Вычисление последнего дня месяца взял отсюда http://wiki.mikrotik.com/wiki/AutomatedBilling хотя сейчас уже переделал по своему - определяется не последний а первый день месяца и запускается соответственно 0.05 мин каждый день (скрипт стал в 3 раза короче)

А про user manager - главное понять что это простой RADIUS и настраивать и обращаться соответственно - к стати hotspot тоже прекрасно работает с user manager

А последними вариация скрипта поделитесь?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
« Предыдущая тема · Трафик · Следующая тема »
 

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 22.9.2018, 17:36