Гайджин 574 Posted 2010-10-05 07:56:20 Share Posted 2010-10-05 07:56:20 Никаких PPP, тупо NAT. Точную конфигурацию и про аггрегацию не скажу, я не админ а скромный программист и доступа туда у меня нет. Хм... Ну тут я если честно диву даюсь, тут похоже одно из: 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) 2. Либо Коры2Дуо у Вас какие то детские. 3. Либо админы чего то недоадминивают. Про тарифы можно тут глянуть. Пока не размазалась никак, т.к. это акционные тарифы и на них подключают, на сколько я знаю, только новых абонов. Так на "сотке" выдается 300Г в месяц (суммарного?) и на дни трафик не режется? Т.е. пока не выбереш скорость не понижается? Да, акксессы были перед этим в "предзагибочном" состоянии, но только ж никто об этом не подумал - главное тарифы было ввести. В общем ненависть и презрение ко всему этому маркетологическому сброду. Маркетологи отдельной жизнью живут что ли? Link to post Share on other sites
nightfly 1,252 Posted 2010-10-05 08:28:38 Share Posted 2010-10-05 08:28:38 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) а в чем проблема? Маркетологи отдельной жизнью живут что ли? а это как правило так и есть - еще не привыкли? Link to post Share on other sites
madf 279 Posted 2010-10-05 08:52:26 Share Posted 2010-10-05 08:52:26 Никаких PPP, тупо NAT. Точную конфигурацию и про аггрегацию не скажу, я не админ а скромный программист и доступа туда у меня нет. Хм... Ну тут я если честно диву даюсь, тут похоже одно из: 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) 2. Либо Коры2Дуо у Вас какие то детские. 3. Либо админы чего то недоадминивают. Про тарифы можно тут глянуть. Пока не размазалась никак, т.к. это акционные тарифы и на них подключают, на сколько я знаю, только новых абонов. Так на "сотке" выдается 300Г в месяц (суммарного?) и на дни трафик не режется? Т.е. пока не выбереш скорость не понижается? Да, акксессы были перед этим в "предзагибочном" состоянии, но только ж никто об этом не подумал - главное тарифы было ввести. В общем ненависть и презрение ко всему этому маркетологическому сброду. Маркетологи отдельной жизнью живут что ли? По первому - возможно неоптимально сделаны NAT'ы, т.к. на BSD'шных access'ах таких проблем не наблюдается. На дни не режется. Маркетологи как обычно живут. Я еще не видел нормального их взаимодействия с техническим подразделением. Вообще говоря, проблема как всегда организационная. Link to post Share on other sites
speedfire87 7 Posted 2010-10-05 13:05:52 Author Share Posted 2010-10-05 13:05:52 Gts сколько знаю у них по жизни преведы, на это не обращаем внимания идем дальше. Какие идеи по скриптописанию? Link to post Share on other sites
madf 279 Posted 2010-10-05 13:28:38 Share Posted 2010-10-05 13:28:38 Gts сколько знаю у них по жизни преведы, на это не обращаем внимания идем дальше. Какие идеи по скриптописанию? По крону проверять состояние статы пользователей и перенастраивать шейпы. Link to post Share on other sites
Гайджин 574 Posted 2010-10-05 13:53:12 Share Posted 2010-10-05 13:53:12 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) а в чем проблема? Так в том то и оно, что нет проблем... Маркетологи отдельной жизнью живут что ли? а это как правило так и есть - еще не привыкли? Нет - не привык, у нас не так... Link to post Share on other sites
Небесный 26 Posted 2010-10-05 15:07:05 Share Posted 2010-10-05 15:07:05 Я себе сделал некое подобие вашего запроса. например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический. Реализация немного туповатая(но ничего придумать больше не смог в связи с СТЖ), скриптами читаю ночью трафик из статы, пишу в 00.00 значение трафика в отдельный файл, потом скрипт(раз в 10 мин.) проверяет текущий траф,- если разница между онлайн-траф и между траф, который был записан ночью в файл - больше чем 0.5Гб - скорость режется. Особой конечно нагрузки из-за всего этого не ощущаю, просто потому что всего-то 250 юзеров. ))) Не знаю, как себя такая схема будет вести при 2К юзеров и больше. Могу привести в тему свои скрипты. Link to post Share on other sites
Гайджин 574 Posted 2010-10-05 16:33:14 Share Posted 2010-10-05 16:33:14 например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический. Опа - динамические шейперы... Здравствуй ЕвропаОнЛайн - новое это хорошо забытое старое... Link to post Share on other sites
Небесный 26 Posted 2010-10-06 06:24:24 Share Posted 2010-10-06 06:24:24 Угу, и кстати пользуются успехом эти тарифы. А, что не сделаешь ради наших любимых юзвергов, чтобы они были довольны. Link to post Share on other sites
Dimension 39 Posted 2010-10-09 10:32:24 Share Posted 2010-10-09 10:32:24 Я себе сделал некое подобие вашего запроса. например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический. Реализация немного туповатая(но ничего придумать больше не смог в связи с СТЖ), скриптами читаю ночью трафик из статы, пишу в 00.00 значение трафика в отдельный файл, потом скрипт(раз в 10 мин.) проверяет текущий траф,- если разница между онлайн-траф и между траф, который был записан ночью в файл - больше чем 0.5Гб - скорость режется. Особой конечно нагрузки из-за всего этого не ощущаю, просто потому что всего-то 250 юзеров. ))) Не знаю, как себя такая схема будет вести при 2К юзеров и больше. Могу привести в тему свои скрипты. если не трудно - кинь скрипты пожалуйста Link to post Share on other sites
heavydude 0 Posted 2010-10-10 16:21:25 Share Posted 2010-10-10 16:21:25 Есть решение под Stargazer + mysql, раз в сутки ходит робот и скоростя проверяет. По всем безлимиткам сделаны пороги закачек, после которых скорость режется в двое (подстроить можно). Если кому надо - выложу скрипт. Реализовал так же до кучи распределение 15 реальников на юзеров случайным образом. Link to post Share on other sites
heavydude 0 Posted 2010-10-10 16:27:23 Share Posted 2010-10-10 16:27:23 У меня среднестат 12 гб на человека, но по статистике 10 процентов - люди которые уже даже не знаю, что качают. Каждый месяц по 150 гигов на безлимитке в мегабит. Я даже не представляю - что же можно целый год так интенсивно качать. У самого - 40, ну 50 - при том что в нете постояно работаю, ночью иногда кино в онлайне смотрю, и дистрибутивы качаю, когда надо. Мне кажется - дай им 4 мегабита - так и все 4 засадят. Link to post Share on other sites
Небесный 26 Posted 2010-10-10 17:31:57 Share Posted 2010-10-10 17:31:57 Dimension, без онлайна наверное не обойтись. ))) У меня еще есть реализация ночного и дневного шейпа на обычных тарифах - тоесть ночью с 00.00 до 10.00 я своим хомячкам в два раза поднимаю скорость. И все это в перемешку с динамическим шейпом. Кстати, был бы рад, чтобы кто-то и глянул еще со стороны, может и схему то можно будет упростить. Да и вообще может вынести в другую ветку, где и допиляем все вместе. Прошу сильно не пинать - скрипты безусловно еще сырые, идея имхо непродуманая - все делалось на быструю руку. Такс, хватить базарить - привожу скрипты. Скрипты обычных тарифов, днем обычная скорость, ночью мы повышаем. OnConnect: #!/bin/bash ip=$2 # Удаляем правила из фаера ###################################################################### iptables -t filter -D INPUT -s $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D INPUT -s $ip -j QUEUE done iptables -t filter -D FORWARD -s $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D FORWARD -s $ip -j QUEUE done iptables -t filter -D FORWARD -d $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D FORWARD -d $ip -j QUEUE done iptables -t filter -D OUTPUT -d $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D OUTPUT -d $ip -j QUEUE done ####################################################################### # Добавляем правила в фаер ####################################################################### iptables -t filter -A INPUT -s $ip -j QUEUE iptables -t filter -A FORWARD -s $ip -j QUEUE iptables -t filter -A FORWARD -d $ip -j QUEUE iptables -t filter -A OUTPUT -d $ip -j QUEUE ####################################################################### # NAT ####################################################################### # Удаляем NAT iptables -t nat -D POSTROUTING -s $ip -o eth0 -j SNAT --to ххх.ххх.ххх.ххх while [ $? -eq 0 ] do iptables -t nat -D POSTROUTING -s $ip -o eth0 -j SNAT --to ххх.ххх.ххх.ххх done # Добавляем NAT iptables -t nat -A POSTROUTING -s $ip -o eth0 -j SNAT --to ххх.ххх.ххх.ххх ####################################################################### int_iface_up=eth0 int_iface_down=eth1 # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 #Selected dirs to connect DIRS=$5 default_speed=64kbit local_speed=80Mbit # Этим файлом я проверяю или юзер живой, когда он выходит - файл удаляется # Это для обычных тарифов, где ночью скорость повышается в два раза. # Ниже по динамическим тарифам, я опять делаю статус народа на живность, пока просто еще руки не дошли # запихнуть всех в одну категорию, пока будет так. echo "$ip" > /var/stargazer/online_users/$LOGIN #Добавляем ID-чтобы как-то нам с шейпом подружиться, тоесть каждому свой марк в фаер добавить echo "$ID" > /var/stargazer/users/$LOGIN/ID # Динамические тарифы, у меня начинаются со слова "dym" # читаем в переменню наш тариф из файловой БД # и если наш тариф динамический, тогда создаем файлы # в statysonline - пишем "1", по выходе пишем "0" - OnDisconect # читаем файл sostoyanie: # Есть три состояния "0" "1" "2" - ниже расскажу, для чего это. tariff=$(grep -i "^tariff=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") pr_tariff=`echo $tariff | head -c 3` if [ "$pr_tariff" == "dym" ]; then echo "1" > /var/stargazer/dynamic/$LOGIN/statysonline sostoyanie=$(cat /var/stargazer/dynamic/$LOGIN/sostoyanie) fi # Функция, которая определяет скорость, основана на том, что в названии тарифа, есть цифры, # которые соотвествуют скорость в килобитах, потом умножаю на 1024, в шейпе работаю в битах. # Здесь мы видим, уже наши состояния 0, 1 и 2 и в соотвествии с ними, я определяю скорость. # как я меняю это состояние - это работают уже скрипты, по крону function fspeedkb() { ftariff=$1 pr_ftariff=`echo $ftariff | head -c 3` proverka=$(echo "$ftariff" | sed "s/[^0-9]//g") if [ "$proverka" != "" ] then if [ "$pr_tariff" == "dym" ] then sostoyanie=$(cat /var/stargazer/dynamic/$LOGIN/sostoyanie) case $sostoyanie in "0") fspeedkb=$(($proverka * 1024 ));; "1") fspeedkb=$(($proverka * 512 ));; "2") fspeedkb=$(($proverka * 256 ));; esac else if [ `date +"%H:%M"` \< "10:00" ] then fspeedkb=$(($proverka * 2048 )) # Ночная скорость else fspeedkb=$(($proverka * 1024 )) # Дневная скорость fi fi fi if [ "$proverka" = "" ]; # Если мы не нашли никаких цифр - ставим значение по дефолту then fspeedkb=65536 fi if [ "$ftariff" = "mriya" ]; # Это особый тариф, его можно убрать - просто для меня это удобно. then fspeedkb=10485760 fi echo $fspeedkb"bit" } # Через функцию fspeedkb() из тарифного плана узнаем скорость для шейпера # функция работает: извлекает числовое значение из тарифного плана, # это число идет килобитах, чтобы получить в битах - умножаем на 1024 speedkb=`fspeedkb $tariff` # Думаю дальше коментариев не нужно, это уже придумано до меня, со всеми эд-такими файлами. declare -i mark=$ID+10 declare -i mark1=$ID+2000 declare -i mark2=$ID+4000 declare -i mark3=$ID+6000 echo "$mark" > /var/stargazer/users/$LOGIN/shaper_mark echo "$mark1" > /var/stargazer/users/$LOGIN/shaper_mark1 echo "$mark2" > /var/stargazer/users/$LOGIN/shaper_mark2 echo "$mark3" > /var/stargazer/users/$LOGIN/shaper_mark3 echo "$speedkb" > /var/stargazer/users/$LOGIN/shaper_rate echo "$local_speed" > /var/stargazer/users/$LOGIN/shaper_rate_loc iptables -t mangle -A FORWARD -d $IP -j MARK --set-mark $mark iptables -t mangle -A FORWARD -s $IP -j MARK --set-mark $mark1 iptables -t mangle -A FORWARD -d $IP -s 10.10.101.0/27 -j MARK --set-mark $mark2 iptables -t mangle -A FORWARD -s $IP -d 10.10.101.0/27 -j MARK --set-mark $mark3 #Резак скорости #Download ########################################################################################## # INET tc class add dev $int_iface_down parent 1:1 classid 1:$mark htb rate $speedkb burst 40k tc filter add dev $int_iface_down parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark # LOCAL tc class add dev $int_iface_down parent 1:1 classid 1:$mark2 htb rate $local_speed burst 40k tc filter add dev $int_iface_down parent 1: protocol ip prio 3 handle $mark2 fw classid 1:$mark2 #Upload ################################## # INET tc class add dev $int_iface_up parent 1:1 classid 1:$mark1 htb rate $speedkb burst 40k tc filter add dev $int_iface_up parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1 # LOCAL tc class add dev $int_iface_down parent 1:1 classid 1:$mark3 htb rate $local_speed burst 40k tc filter add dev $int_iface_down parent 1: protocol ip prio 3 handle $mark3 fw classid 1:$mark3 ########################################################################################### Link to post Share on other sites
Небесный 26 Posted 2010-10-10 17:36:46 Share Posted 2010-10-10 17:36:46 Думаю здесь особых коментариев не нужно. OnDisconect: #!/bin/bash ip=$2 iptables -t filter -D INPUT -s $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D INPUT -s $ip -j QUEUE done ################################## iptables -t filter -D FORWARD -s $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D FORWARD -s $ip -j QUEUE done ################################## iptables -t filter -D FORWARD -d $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D FORWARD -d $ip -j QUEUE done ################################## iptables -t filter -D OUTPUT -d $ip -j QUEUE while [ $? -eq 0 ] do iptables -t filter -D OUTPUT -d $ip -j QUEUE done iptables -t nat -D POSTROUTING -s $ip -o eth0 -j SNAT --to ххх.ххх.ххх.ххх int_iface_up=eth0 int_iface_down=eth1 # Login LOGIN=$1 #user IP IP=$2 #cash CASH=$3 #user ID ID=$4 #Selected dirs to disconnect DIRS=$4 # Для динамических делаю статус в файле, что они не живые. tariff=$(grep -i "^tariff=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") pr_tariff=`echo $tariff | head -c 3` if [ "$pr_tariff" == "dym" ]; then echo "0" > /var/stargazer/dynamic/$LOGIN/statysonline fi # Для обычных тарифов, вообще удаляю файл, который обозначает, что они онлайн rm /var/stargazer/online_users/$LOGIN mark=$(cat /var/stargazer/users/$LOGIN/shaper_mark) mark1=$(cat /var/stargazer/users/$LOGIN/shaper_mark1) mark2=$(cat /var/stargazer/users/$LOGIN/shaper_mark2) mark3=$(cat /var/stargazer/users/$LOGIN/shaper_mark3) rate=$(cat /var/stargazer/users/$LOGIN/shaper_rate) rate_loc=$(cat /var/stargazer/users/$LOGIN/shaper_rate_loc) # INET ############################################################################ if [ -n "$mark" ] then iptables -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark while [ $? == 0 ] do iptables -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark done fi if [ -n "$mark1" ] then iptables -t mangle -D FORWARD -s $IP -j MARK --set-mark $mark1 while [ $? == 0 ] do iptables -t mangle -D FORWARD -d $IP -j MARK --set-mark $mark1 done fi ############################################################################ # LOCAL ########################################################################### if [ -n "$mark2" ] then iptables -t mangle -D FORWARD -d $IP -s 10.10.101.0/27 -j MARK --set-mark $mark2 while [ $? == 0 ] do iptables -t mangle -D FORWARD -d $IP -s 10.10.101.0/27 -j MARK --set-mark $mark2 done fi if [ -n "$mark3" ] then iptables -t mangle -D FORWARD -s $IP -d 10.10.101.0/27 -j MARK --set-mark $mark3 while [ $? == 0 ] do iptables -t mangle -D FORWARD -s $IP -d 10.10.101.0/27 -j MARK --set-mark $mark3 done fi ########################################################################### #Download ########################################################################################## # INET tc filter del dev $int_iface_down parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark tc class del dev $int_iface_down parent 1:1 classid 1:$mark htb rate $rate burst 40k # LOCAL tc filter del dev $int_iface_down parent 1: protocol ip prio 3 handle $mark2 fw classid 1:$mark2 tc class del dev $int_iface_down parent 1:1 classid 1:$mark2 htb rate $rate_loc burst 40k #Upload ################################## # INET tc filter del dev $int_iface_up parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1 tc class del dev $int_iface_up parent 1:1 classid 1:$mark1 htb rate $rate burst 40k # LOCAL tc filter del dev $int_iface_down parent 1: protocol ip prio 3 handle $mark3 fw classid 1:$mark3 tc class del dev $int_iface_down parent 1:1 classid 1:$mark3 htb rate $rate_loc burst 40k ########################################################################################### Link to post Share on other sites
Небесный 26 Posted 2010-10-10 17:41:13 Share Posted 2010-10-10 17:41:13 Для динамических тарифов в OnChange тоже сделал изменения, а для чего, объясняю: Когда в конфигураторе меняю тариф, чтобы создались нужные мне файлы, с которыми, будет работать мой скрипт. OnChange: #!/bin/bash login=$1 param=$2 oldValue=$3 newValue=$4 int_iface_up=eth0 int_iface_down=eth1 if [ "$param"=="tariff" ]; then #################################################################################################################### new_tariff=`echo $newValue | head -c 3` old_tariff=`echo $oldValue | head -c 3` # Если у юзера динамический тариф, тогда создаем файл в /var/stargazer/dynamic/$login с состоянием трафика if [ "$new_tariff" = "dym" ]; then #=================================================================================== mkdir -p /var/stargazer/dynamic/$login # Делаем проверку на наличие файла "stat", при создании нового юзера #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if [ -f /var/stargazer/users/$login/stat ]; then trafik=$(grep -i "^D0=" /var/stargazer/users/$login/stat | cut -f 2 -d"=") echo "$trafik" > /var/stargazer/dynamic/$login/sytki echo "$trafik" > /var/stargazer/dynamic/$login/10min else echo "0" > /var/stargazer/dynamic/$login/sytki echo "0" > /var/stargazer/dynamic/$login/10min fi #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ echo "0" > /var/stargazer/dynamic/$login/raznica echo "0" > /var/stargazer/dynamic/$login/sostoyanie #=================================================================================== fi # Если юзер меняет тариф с динамического на обычный тариф - тогда удаляем папку в /var/stargazer/dynamic/$login с состоянием трафика if [ "$old_tariff" = "dym" ] && [ "$new_tariff" != "dym" ]; then cd /var/stargazer/dynamic/ rm -rf $login fi #################################################################################################################### fi Link to post Share on other sites
Небесный 26 Posted 2010-10-10 17:49:24 Share Posted 2010-10-10 17:49:24 Скрипт который запускаем в 00.00 и в 10.00, ночью мы увеличиваем скорость, а утром возвращаем на места свои, скрипт запускаем по крону. Вот скрипт: #!/bin/bash # переменные #################################### int_iface_up=eth0 int_iface_down=eth1 default_speed=64kbit #################################### function fspeedkb() { ftariff=$1 proverka=$(echo "$ftariff" | sed "s/[^0-9]//g") if [ "$proverka" != "" ] then if [ `date +"%H:%M"` \< "10:00" ] then fspeedkb=$(($proverka * 2048 )) # Ночь else fspeedkb=$(($proverka * 1024 )) # День fi fi if [ "$proverka" = "" ]; # Если мы не нашли никаких цифр - ставим значение по дефолту then fspeedkb=65536 fi echo $fspeedkb"bit" } for user in `ls /var/stargazer/online_users` do tariff=$(grep -i "^tariff=" /var/stargazer/users/$user/conf | cut -f 2 -d"=") pr_tariff=`echo $tariff | head -c 3` if [ "$pr_tariff" != "dym" ]; then speedkb=`fspeedkb $tariff` mark=$(cat /var/stargazer/users/$user/shaper_mark) mark1=$(cat /var/stargazer/users/$user/shaper_mark1) echo "$speedkb" > /var/stargazer/users/$user/shaper_rate # Shaper ###################################################################################### #INET-Download /sbin/tc class change dev $int_iface_down parent 1:1 classid 1:$mark htb rate $speedkb burst 40k #INET-Upload /sbin/tc class change dev $int_iface_up parent 1:1 classid 1:$mark1 htb rate $speedkb burst 40k ###################################################################################### fi done Link to post Share on other sites
Небесный 26 Posted 2010-10-10 18:04:22 Share Posted 2010-10-10 18:04:22 Все больше не могу, заболел малость, температура 38 - чувствую, что сейчас многое понаписываю. Динамические скрипты привожу, без каких либо объяснений, может завтра подописываю коментарии: Скрипт который запускается ночью и обнуляет наше состояние 0, 1, и 2. Ну и переписывает трафик в файл Скрипт, которые запускается каждые 10 минут - он вычитывает текущее состояние трафика с состоянием, которое было записано в 00.00, имея разницу, уже далаем какие-то действия. Срипт ночной: #!/bin/bash # Проверка на запуск 10-ти минутного файла, если он запущен, ждем пока он не окончит работу ( flock -x 200 # Запускаю не только этот скрипт в 00.00, на всяк случай, если вдруг сервак # был вырубился ночью или еще что-то произошло, повторный запуск делаю в # 6.00, если скрипт уже был запущен ночью, тогда просто выхожу. date_sytki=$(cat /var/stargazer/date_sytki) if [ `date +"%m/%d/%y"` == "$date_sytki" ] then exit fi # переменные #################################### int_iface_up=eth0 int_iface_down=eth1 #################################### for user in `ls /var/stargazer/dynamic/` do trafik=$(grep -i "^D0=" /var/stargazer/users/$user/stat | cut -f 2 -d"=") echo "$trafik" > /var/stargazer/dynamic/$user/sytki echo "0" > /var/stargazer/dynamic/$user/sostoyanie tariff=$(grep -i "^tariff=" /var/stargazer/users/$user/conf | cut -f 2 -d"=") function fspeedkb() { ftariff=$1 proverka=$(echo "$ftariff" | sed "s/[^0-9]//g") if [ "$proverka" != "" ] then fspeedkb=$(($(echo "$ftariff" | sed "s/[^0-9]//g") * 1024 )) fi if [ "$proverka" = "" ] then fspeedkb=65536 fi echo $fspeedkb"bit" } speedkb=`fspeedkb $tariff` statysonline=$(cat /var/stargazer/dynamic/$user/statysonline) if [ "$statysonline" = "1" ] then mark=$(cat /var/stargazer/users/$user/shaper_mark) mark1=$(cat /var/stargazer/users/$user/shaper_mark1) echo "$speedkb" > /var/stargazer/users/$user/shaper_rate #Download ################################# # INET /sbin/tc class change dev $int_iface_down parent 1:1 classid 1:$mark htb rate $speedkb burst 40k #Upload ################################## # INET /sbin/tc class change dev $int_iface_up parent 1:1 classid 1:$mark1 htb rate $speedkb burst 40k fi done echo `date +"%m/%d/%y"` > /var/stargazer/date_sytki ) 200>/tmp/clean_stat.lock 10-минутный скрипт: #!/bin/bash ( flock -x 200 # переменные #################################### int_iface_up=eth0 int_iface_down=eth1 #################################### for user in `ls /var/stargazer/dynamic/` do trafik=$(grep -i "^D0=" /var/stargazer/users/$user/stat | cut -f 2 -d"=") echo "$trafik" > /var/stargazer/dynamic/$user/10min sytki=$(cat /var/stargazer/dynamic/$user/sytki) raznica=$(($trafik - $sytki)) echo "$raznica" > /var/stargazer/dynamic/$user/raznica if [ $raznica -gt 524288000 ] then echo "1" > /var/stargazer/dynamic/$user/sostoyanie fi if [ $raznica -gt 1048576000 ] then echo "2" > /var/stargazer/dynamic/$user/sostoyanie fi tariff=$(grep -i "^tariff=" /var/stargazer/users/$user/conf | cut -f 2 -d"=") function fspeedkb() { ftariff=$1 proverka=$(echo "$ftariff" | sed "s/[^0-9]//g") sostoyanie=$(cat /var/stargazer/dynamic/$user/sostoyanie) if [ "$proverka" != "" ] then case $sostoyanie in "0") fspeedkb=$(($proverka * 1024 ));; "1") fspeedkb=$(($proverka * 512 ));; "2") fspeedkb=$(($proverka * 256 ));; esac fi if [ "$proverka" = "" ]; then fspeedkb=65536 fi echo $fspeedkb"bit" } speedkb=`fspeedkb $tariff` statysonline=$(cat /var/stargazer/dynamic/$user/statysonline) if [ "$statysonline" = "1" ] then mark=$(cat /var/stargazer/users/$user/shaper_mark) mark1=$(cat /var/stargazer/users/$user/shaper_mark1) echo "$speedkb" > /var/stargazer/users/$user/shaper_rate #Download ################################# # INET /sbin/tc class change dev $int_iface_down parent 1:1 classid 1:$mark htb rate $speedkb burst 40k #Upload ################################## # INET /sbin/tc class change dev $int_iface_up parent 1:1 classid 1:$mark1 htb rate $speedkb burst 40k fi done ) 200>/tmp/clean_stat.lock Link to post Share on other sites
Dimension 39 Posted 2010-10-11 06:04:00 Share Posted 2010-10-11 06:04:00 Небесный, спасибо большое. Главное что все работает, а метод реализации по сути то и не важен! Link to post Share on other sites
Небесный 26 Posted 2010-10-11 06:40:17 Share Posted 2010-10-11 06:40:17 Небесный, спасибо большое. Главное что все работает, а метод реализации по сути то и не важен! Ну, почему не важен, вот сегодня например уже я изменил скрипты, которые меняют скорость на ночь, вместо двух скриптов теперь уже один скрипт. Буду и думать как дальше более упрощать схему. И еще что мне не нравится, что для всех динамических тарифов стоит одинаковый порог, 500 метров и 1 Гиг. Для более скоросных динамических тарифов - нужно было бы и порог то поднять немного, ИМХО. Но пока не придумал как это более безболезнено реализовать. Link to post Share on other sites
speedfire87 7 Posted 2010-10-15 14:53:42 Author Share Posted 2010-10-15 14:53:42 Вчера было скучно, написал себе скрипт за 2 часа, работает без проблем.) Link to post Share on other sites
Небесный 26 Posted 2010-10-15 15:02:23 Share Posted 2010-10-15 15:02:23 speedfire87, поделиться сможете? Авось что-то для себя полезное вынесу. Link to post Share on other sites
speedfire87 7 Posted 2010-10-15 15:46:20 Author Share Posted 2010-10-15 15:46:20 У меня он жестко заточен под мою систему, htb.init скрипт для шейпера и т.д. Link to post Share on other sites
Небесный 26 Posted 2010-10-15 17:33:33 Share Posted 2010-10-15 17:33:33 Ну, я ж не говорил, что я себе хочу его ставить, мне просто интересная сама реализация. Чисто из любопытства и личного развития, я как та мочалка - впитываю в себя, все что попадается под руки. Link to post Share on other sites
speedfire87 7 Posted 2010-10-15 23:35:52 Author Share Posted 2010-10-15 23:35:52 Ок буду ковыряться на серваке скину, может кто что модернизирует. Link to post Share on other sites
Небесный 26 Posted 2010-10-18 17:00:36 Share Posted 2010-10-18 17:00:36 Смотрю у некоторых коллег в ход пошел тариф такого вида: С 1.00 до 2.00 - скорость 10 мегабитС 2.00 до 8.00 - скорость 20 мегабит С 8.00 до 9.00 - скорость 10 мегабит С 9.00 до 1.00 - скорость 5 мегабит Цена за такое удовольствие 100 грн. Опять заставляют думать и писать скрипты. Боюсь раздуть свой СТЖ в монстра самописных скриптов. Поболтамем народ на эту тему? Кто что скажет. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now