Перейти до

Актуальный тариф у провайдеров


Рекомендованные сообщения

Никаких PPP, тупо NAT. Точную конфигурацию и про аггрегацию не скажу, я не админ а скромный программист и доступа туда у меня нет.

Хм... Ну тут я если честно диву даюсь, тут похоже одно из:

1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?)

2. Либо Коры2Дуо у Вас какие то детские.

3. Либо админы чего то недоадминивают.

Про тарифы можно тут глянуть. Пока не размазалась никак, т.к. это акционные тарифы и на них подключают, на сколько я знаю, только новых абонов.

Так на "сотке" выдается 300Г в месяц (суммарного?) и на дни трафик не режется? Т.е. пока не выбереш скорость не понижается?

Да, акксессы были перед этим в "предзагибочном" состоянии, но только ж никто об этом не подумал - главное тарифы было ввести. В общем ненависть и презрение ко всему этому маркетологическому сброду.

Маркетологи отдельной жизнью живут что ли?

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 54
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

"Безлимит 100 гб" звучит гордо)) теряя смысл этого слова. А зачем? Ведь можна просто безлимит. Среднестатистический юзверь потребляет и так до 100 гб, а ограничения народ смущают.

Бред это. Это делают те у кого нет возможности предоставлять нормальный интернет. Называется "додемпинговались". Подняли скорость, загнали себя в *, теперь пытаются с нее выбраться. Если б был на мест

+1, у нас с недавних пор все тарифы такие. Клиентам очень нравится супер-быстрый инет, а мне нравится отсутствие жалоб на скорость и относительно небольшая загрузка каналов. Да, все идет к тому что

1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?)

а в чем проблема? :lol:

 

Маркетологи отдельной жизнью живут что ли?

а это как правило так и есть - еще не привыкли? :P

Ссылка на сообщение
Поделиться на других сайтах

Никаких PPP, тупо NAT. Точную конфигурацию и про аггрегацию не скажу, я не админ а скромный программист и доступа туда у меня нет.

Хм... Ну тут я если честно диву даюсь, тут похоже одно из:

1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?)

2. Либо Коры2Дуо у Вас какие то детские.

3. Либо админы чего то недоадминивают.

Про тарифы можно тут глянуть. Пока не размазалась никак, т.к. это акционные тарифы и на них подключают, на сколько я знаю, только новых абонов.

Так на "сотке" выдается 300Г в месяц (суммарного?) и на дни трафик не режется? Т.е. пока не выбереш скорость не понижается?

Да, акксессы были перед этим в "предзагибочном" состоянии, но только ж никто об этом не подумал - главное тарифы было ввести. В общем ненависть и презрение ко всему этому маркетологическому сброду.

Маркетологи отдельной жизнью живут что ли?

По первому - возможно неоптимально сделаны NAT'ы, т.к. на BSD'шных access'ах таких проблем не наблюдается.

На дни не режется.

Маркетологи как обычно живут. Я еще не видел нормального их взаимодействия с техническим подразделением.

 

Вообще говоря, проблема как всегда организационная.

Ссылка на сообщение
Поделиться на других сайтах

Gts сколько знаю у них по жизни преведы, на это не обращаем внимания идем дальше. Какие идеи по скриптописанию?

Ссылка на сообщение
Поделиться на других сайтах

Gts сколько знаю у них по жизни преведы, на это не обращаем внимания идем дальше. Какие идеи по скриптописанию?

По крону проверять состояние статы пользователей и перенастраивать шейпы.

Ссылка на сообщение
Поделиться на других сайтах
1. Либо вы сквозь натилки более 4Г пускаете. (Можно в личку объем внешних каналов?)

а в чем проблема? :lol:

Так в том то и оно, что нет проблем...

Маркетологи отдельной жизнью живут что ли?

а это как правило так и есть - еще не привыкли? :P

Нет - не привык, у нас не так... :lol:

Ссылка на сообщение
Поделиться на других сайтах

Я себе сделал некое подобие вашего запроса.

 

например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический.

 

Реализация немного туповатая(но ничего придумать больше не смог в связи с СТЖ), скриптами читаю ночью трафик из статы, пишу в 00.00 значение трафика в отдельный файл, потом скрипт(раз в 10 мин.) проверяет текущий траф,- если разница между онлайн-траф и между траф, который был записан ночью в файл - больше чем 0.5Гб - скорость режется.

 

Особой конечно нагрузки из-за всего этого не ощущаю, просто потому что всего-то 250 юзеров. )))

Не знаю, как себя такая схема будет вести при 2К юзеров и больше.

 

Могу привести в тему свои скрипты.

Ссылка на сообщение
Поделиться на других сайтах

например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический.

Опа - динамические шейперы... :lol:

Здравствуй ЕвропаОнЛайн :lol: - новое это хорошо забытое старое...

Ссылка на сообщение
Поделиться на других сайтах

Угу, и кстати пользуются успехом эти тарифы.

А, что не сделаешь ради наших любимых юзвергов, чтобы они были довольны. :lol:

Ссылка на сообщение
Поделиться на других сайтах

Я себе сделал некое подобие вашего запроса.

 

например скорость 512 кило, если абон превышает за сутки 0.5Гб, скорость падает на 256 кило, если превышает за сутки 1Гб - тогда 128 кило, ну и подобное с другими тарифами, всего сделал таких: 512кб-динамический, 1М-динамический, 2М-динамический.

 

Реализация немного туповатая(но ничего придумать больше не смог в связи с СТЖ), скриптами читаю ночью трафик из статы, пишу в 00.00 значение трафика в отдельный файл, потом скрипт(раз в 10 мин.) проверяет текущий траф,- если разница между онлайн-траф и между траф, который был записан ночью в файл - больше чем 0.5Гб - скорость режется.

 

Особой конечно нагрузки из-за всего этого не ощущаю, просто потому что всего-то 250 юзеров. )))

Не знаю, как себя такая схема будет вести при 2К юзеров и больше.

 

Могу привести в тему свои скрипты.

если не трудно - кинь скрипты пожалуйста

Ссылка на сообщение
Поделиться на других сайтах

Есть решение под Stargazer + mysql, раз в сутки ходит робот и скоростя проверяет. По всем безлимиткам сделаны пороги закачек, после которых скорость режется в двое (подстроить можно). Если кому надо - выложу скрипт.

 

Реализовал так же до кучи распределение 15 реальников на юзеров случайным образом.

Ссылка на сообщение
Поделиться на других сайтах

У меня среднестат 12 гб на человека, но по статистике 10 процентов - люди которые уже даже не знаю, что качают. Каждый месяц по 150 гигов на безлимитке в мегабит. Я даже не представляю - что же можно целый год так интенсивно качать. У самого - 40, ну 50 - при том что в нете постояно работаю, ночью иногда кино в онлайне смотрю, и дистрибутивы качаю, когда надо. Мне кажется - дай им 4 мегабита - так и все 4 засадят.

Ссылка на сообщение
Поделиться на других сайтах

Dimension, без онлайна наверное не обойтись. )))

У меня еще есть реализация ночного и дневного шейпа на обычных тарифах - тоесть ночью с 00.00 до 10.00 я своим хомячкам в два раза поднимаю скорость.

И все это в перемешку с динамическим шейпом.

 

:DКстати, был бы рад, чтобы кто-то и глянул еще со стороны, может и схему то можно будет упростить.

Да и вообще может вынести в другую ветку, где и допиляем все вместе.

Прошу сильно не пинать - скрипты безусловно еще сырые, идея имхо непродуманая - все делалось на быструю руку.

 

Такс, хватить базарить - привожу скрипты.

 

Скрипты обычных тарифов, днем обычная скорость, ночью мы повышаем.

 

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
###########################################################################################

Ссылка на сообщение
Поделиться на других сайтах

Думаю здесь особых коментариев не нужно.

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
###########################################################################################

Ссылка на сообщение
Поделиться на других сайтах

Для динамических тарифов в 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

Ссылка на сообщение
Поделиться на других сайтах

Скрипт который запускаем в 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

Ссылка на сообщение
Поделиться на других сайтах

Все больше не могу, заболел малость, температура 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

Ссылка на сообщение
Поделиться на других сайтах

Небесный, спасибо большое. Главное что все работает, а метод реализации по сути то и не важен!

Ну, почему не важен, вот сегодня например уже я изменил скрипты, которые меняют скорость на ночь, вместо двух скриптов теперь уже один скрипт.

 

Буду и думать как дальше более упрощать схему.

И еще что мне не нравится, что для всех динамических тарифов стоит одинаковый порог, 500 метров и 1 Гиг.

Для более скоросных динамических тарифов - нужно было бы и порог то поднять немного, ИМХО. Но пока не придумал как это более безболезнено реализовать.

Ссылка на сообщение
Поделиться на других сайтах

Ну, я ж не говорил, что я себе хочу его ставить, мне просто интересная сама реализация.

Чисто из любопытства и личного развития, я как та мочалка - впитываю в себя, все что попадается под руки.

Ссылка на сообщение
Поделиться на других сайтах

Смотрю у некоторых коллег в ход пошел тариф такого вида:

С 1.00 до 2.00 - скорость 10 мегабит

С 2.00 до 8.00 - скорость 20 мегабит

С 8.00 до 9.00 - скорость 10 мегабит

С 9.00 до 1.00 - скорость 5 мегабит

 

Цена за такое удовольствие 100 грн.

 

Опять заставляют думать и писать скрипты. ;)

Боюсь раздуть свой СТЖ в монстра самописных скриптов.

Поболтамем народ на эту тему? :blink: Кто что скажет.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...