В чём проблема?

интернет Компьютеры Linux железо сети

Вот попытался написать скрипт, которые ограничивает скорость, если пользователь истратит 200,1 МБ. Но ограничение не срабатывает. Вот скрипт:

limit.sh
#!/bin/bash

ACTION=$1
IFACE=$2
MAX_LIMIT=(200.1 MB)
SPEED_RX=64Kbit
SPEED_TX=64Kbit
BURST=12k

case $ACTION in
START)
while true
do
TRAFFIC=$(ifconfig ppp0 |grep 'RX bytes' |gawk '{print $3, $4}')
if [ $TRAFFIC == $MAX_LIMIT]
then
echo "work"
else
/sbin/tc qdisc add dev eth1 root handle 1: htb default 10 r2q 1
/sbin/tc class add dev eth1 parent 1: classid 1:10 htb rate $SPEED_RX quantum 8000 burst 8k
/sbin/tc qdisc add dev eth1 handle ffff: ingress
/sbin/tc filter add dev eth1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $SPEED_TX burst $BURST drop flowid :1
TRAFFIC=NONE
fi
done
;;
STOP)
killall limit.sh
;;
esac

Где ошибка?
Ответы:
Отэтто синт...
В голове. ВиО - не специализированный форум, где будут вдумываться в каждую запятую. Здесь чуть больше чем все практикуют легкие и ненапряжные вопросы и ответы.
Скорей всего проблема в этой строчке: TRAFFIC=$(ifconfig ppp0 |grep 'RX bytes' |gawk '{print $3, $4}')
Проверьте что она выдает просто так в терминале(не вся, а содержимое переменной.). В выхлопе могут оказаться побочные символы, которые делают условие ложным всегда.
В любом случае это костыль, который при этом не эффективен. Ограничение инета будет если любой пользователь превысит трафик. Ограничить трафик можно фаерволом (надо гуглить, не помню, но знаю, что можно), но будет сбиваться после каждой перезагрузке. Можно раз в час (и перед каждым выключением) сохранять и восстанавливать при обнулении. Правила можно привязать к пользователю (gid, uid) и это будет более точный подсчёт, чем скриптом.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.