Гайджин 574 Опубліковано: 2010-10-05 07:56:20 Share Опубліковано: 2010-10-05 07:56:20 Никаких PPP, тупо NAT. Точную конфигурацию и про аггрегацию не скажу, я не админ а скромный программист и доступа туда у меня нет. Хм... Ну тут я если честно диву даюсь, тут похоже одно из: 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) 2. Либо Коры2Дуо у Вас какие то детские. 3. Либо админы чего то недоадминивают. Про тарифы можно тут глянуть. Пока не размазалась никак, т.к. это акционные тарифы и на них подключают, на сколько я знаю, только новых абонов. Так на "сотке" выдается 300Г в месяц (суммарного?) и на дни трафик не режется? Т.е. пока не выбереш скорость не понижается? Да, акксессы были перед этим в "предзагибочном" состоянии, но только ж никто об этом не подумал - главное тарифы было ввести. В общем ненависть и презрение ко всему этому маркетологическому сброду. Маркетологи отдельной жизнью живут что ли? Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2010-10-05 08:28:38 Share Опубліковано: 2010-10-05 08:28:38 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) а в чем проблема? Маркетологи отдельной жизнью живут что ли? а это как правило так и есть - еще не привыкли? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2010-10-05 08:52:26 Share Опубліковано: 2010-10-05 08:52:26 Никаких PPP, тупо NAT. Точную конфигурацию и про аггрегацию не скажу, я не админ а скромный программист и доступа туда у меня нет. Хм... Ну тут я если честно диву даюсь, тут похоже одно из: 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) 2. Либо Коры2Дуо у Вас какие то детские. 3. Либо админы чего то недоадминивают. Про тарифы можно тут глянуть. Пока не размазалась никак, т.к. это акционные тарифы и на них подключают, на сколько я знаю, только новых абонов. Так на "сотке" выдается 300Г в месяц (суммарного?) и на дни трафик не режется? Т.е. пока не выбереш скорость не понижается? Да, акксессы были перед этим в "предзагибочном" состоянии, но только ж никто об этом не подумал - главное тарифы было ввести. В общем ненависть и презрение ко всему этому маркетологическому сброду. Маркетологи отдельной жизнью живут что ли? По первому - возможно неоптимально сделаны NAT'ы, т.к. на BSD'шных access'ах таких проблем не наблюдается. На дни не режется. Маркетологи как обычно живут. Я еще не видел нормального их взаимодействия с техническим подразделением. Вообще говоря, проблема как всегда организационная. Ссылка на сообщение Поделиться на других сайтах
speedfire87 7 Опубліковано: 2010-10-05 13:05:52 Автор Share Опубліковано: 2010-10-05 13:05:52 Gts сколько знаю у них по жизни преведы, на это не обращаем внимания идем дальше. Какие идеи по скриптописанию? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2010-10-05 13:28:38 Share Опубліковано: 2010-10-05 13:28:38 Gts сколько знаю у них по жизни преведы, на это не обращаем внимания идем дальше. Какие идеи по скриптописанию? По крону проверять состояние статы пользователей и перенастраивать шейпы. Ссылка на сообщение Поделиться на других сайтах
Гайджин 574 Опубліковано: 2010-10-05 13:53:12 Share Опубліковано: 2010-10-05 13:53:12 1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?) а в чем проблема? Так в том то и оно, что нет проблем... Маркетологи отдельной жизнью живут что ли? а это как правило так и есть - еще не привыкли? Нет - не привык, у нас не так... Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-05 15:07:05 Share Опубліковано: 2010-10-05 15:07:05 Я себе сделал некое подобие вашего запроса. например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический. Реализация немного туповатая(но ничего придумать больше не смог в связи с СТЖ), скриптами читаю ночью трафик из статы, пишу в 00.00 значение трафика в отдельный файл, потом скрипт(раз в 10 мин.) проверяет текущий траф,- если разница между онлайн-траф и между траф, который был записан ночью в файл - больше чем 0.5Гб - скорость режется. Особой конечно нагрузки из-за всего этого не ощущаю, просто потому что всего-то 250 юзеров. ))) Не знаю, как себя такая схема будет вести при 2К юзеров и больше. Могу привести в тему свои скрипты. Ссылка на сообщение Поделиться на других сайтах
Гайджин 574 Опубліковано: 2010-10-05 16:33:14 Share Опубліковано: 2010-10-05 16:33:14 например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический. Опа - динамические шейперы... Здравствуй ЕвропаОнЛайн - новое это хорошо забытое старое... Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-06 06:24:24 Share Опубліковано: 2010-10-06 06:24:24 Угу, и кстати пользуются успехом эти тарифы. А, что не сделаешь ради наших любимых юзвергов, чтобы они были довольны. Ссылка на сообщение Поделиться на других сайтах
Dimension 37 Опубліковано: 2010-10-09 10:32:24 Share Опубліковано: 2010-10-09 10:32:24 Я себе сделал некое подобие вашего запроса. например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический. Реализация немного туповатая(но ничего придумать больше не смог в связи с СТЖ), скриптами читаю ночью трафик из статы, пишу в 00.00 значение трафика в отдельный файл, потом скрипт(раз в 10 мин.) проверяет текущий траф,- если разница между онлайн-траф и между траф, который был записан ночью в файл - больше чем 0.5Гб - скорость режется. Особой конечно нагрузки из-за всего этого не ощущаю, просто потому что всего-то 250 юзеров. ))) Не знаю, как себя такая схема будет вести при 2К юзеров и больше. Могу привести в тему свои скрипты. если не трудно - кинь скрипты пожалуйста Ссылка на сообщение Поделиться на других сайтах
heavydude 0 Опубліковано: 2010-10-10 16:21:25 Share Опубліковано: 2010-10-10 16:21:25 Есть решение под Stargazer + mysql, раз в сутки ходит робот и скоростя проверяет. По всем безлимиткам сделаны пороги закачек, после которых скорость режется в двое (подстроить можно). Если кому надо - выложу скрипт. Реализовал так же до кучи распределение 15 реальников на юзеров случайным образом. Ссылка на сообщение Поделиться на других сайтах
heavydude 0 Опубліковано: 2010-10-10 16:27:23 Share Опубліковано: 2010-10-10 16:27:23 У меня среднестат 12 гб на человека, но по статистике 10 процентов - люди которые уже даже не знаю, что качают. Каждый месяц по 150 гигов на безлимитке в мегабит. Я даже не представляю - что же можно целый год так интенсивно качать. У самого - 40, ну 50 - при том что в нете постояно работаю, ночью иногда кино в онлайне смотрю, и дистрибутивы качаю, когда надо. Мне кажется - дай им 4 мегабита - так и все 4 засадят. Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-10 17:31:57 Share Опубліковано: 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 ########################################################################################### Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-10 17:36:46 Share Опубліковано: 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 ########################################################################################### Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-10 17:41:13 Share Опубліковано: 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 Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-10 17:49:24 Share Опубліковано: 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 Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-10 18:04:22 Share Опубліковано: 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 Ссылка на сообщение Поделиться на других сайтах
Dimension 37 Опубліковано: 2010-10-11 06:04:00 Share Опубліковано: 2010-10-11 06:04:00 Небесный, спасибо большое. Главное что все работает, а метод реализации по сути то и не важен! Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-11 06:40:17 Share Опубліковано: 2010-10-11 06:40:17 Небесный, спасибо большое. Главное что все работает, а метод реализации по сути то и не важен! Ну, почему не важен, вот сегодня например уже я изменил скрипты, которые меняют скорость на ночь, вместо двух скриптов теперь уже один скрипт. Буду и думать как дальше более упрощать схему. И еще что мне не нравится, что для всех динамических тарифов стоит одинаковый порог, 500 метров и 1 Гиг. Для более скоросных динамических тарифов - нужно было бы и порог то поднять немного, ИМХО. Но пока не придумал как это более безболезнено реализовать. Ссылка на сообщение Поделиться на других сайтах
speedfire87 7 Опубліковано: 2010-10-15 14:53:42 Автор Share Опубліковано: 2010-10-15 14:53:42 Вчера было скучно, написал себе скрипт за 2 часа, работает без проблем.) Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-15 15:02:23 Share Опубліковано: 2010-10-15 15:02:23 speedfire87, поделиться сможете? Авось что-то для себя полезное вынесу. Ссылка на сообщение Поделиться на других сайтах
speedfire87 7 Опубліковано: 2010-10-15 15:46:20 Автор Share Опубліковано: 2010-10-15 15:46:20 У меня он жестко заточен под мою систему, htb.init скрипт для шейпера и т.д. Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-15 17:33:33 Share Опубліковано: 2010-10-15 17:33:33 Ну, я ж не говорил, что я себе хочу его ставить, мне просто интересная сама реализация. Чисто из любопытства и личного развития, я как та мочалка - впитываю в себя, все что попадается под руки. Ссылка на сообщение Поделиться на других сайтах
speedfire87 7 Опубліковано: 2010-10-15 23:35:52 Автор Share Опубліковано: 2010-10-15 23:35:52 Ок буду ковыряться на серваке скину, может кто что модернизирует. Ссылка на сообщение Поделиться на других сайтах
Небесный 26 Опубліковано: 2010-10-18 17:00:36 Share Опубліковано: 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 грн. Опять заставляют думать и писать скрипты. Боюсь раздуть свой СТЖ в монстра самописных скриптов. Поболтамем народ на эту тему? Кто что скажет. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас