Ограничение скорости в Ubuntu в зависимости от трафика - PullRequest
0 голосов
/ 28 мая 2020

Я наткнулся на сценарий, например Wondershaper

Сценарий ужасный c, но есть ли способ сделать его умнее?

Как будто он запускается после того, как определенный трафик c ушел через?

Скажем, 1 ТБ установлен в день, при достижении 1 ТБ скрипт включается автоматически?

Я подумал о настройке задания crn,

В 12 часов очищает Wondershaper, и через 15-минутный интервал он проверяет, пересек ли сервер ограничение в 1 ТБ за день, а затем, если это правда, запускает ограничитель,

, но я не уверен, как настроить Вторая часть, как я могу настроить способ, который позволит ограничителю работать после пересечения 1 ТБ?

Удалить код

wondershaper -ca eth0

Код лимита

wondershaper -a eth0 -u 154000

1 Ответ

0 голосов
/ 08 июня 2020

Я сделал для этого специальный скрипт, так как это невозможно сделать в системе, мне пришлось проявить творческий подход и сделать вызов API в центр обработки данных, а затем запустить задание cron.

I также использовал bashjson, чтобы запустить его. Я прикрепил сценарий ниже.

date=$(date +%F)
url='API URL /metrics/datatraffic?from='
url1='T00:00:00Z&to='
url2='T23:59:59Z&aggregation=SUM'
final="$url$date$url1$date$url2"

wget --no-check-certificate -O output.txt \
  --method GET \
  --timeout=0 \
  --header 'X-Lsw-Auth: API AUTH' \
   $final

sed 's/[][]//g' output.txt >> test1.json // will remove '[]' from the code just to make things easier for bashjson to understand
down=$(/root/bashjson/bashjson.sh test1.json metrics DOWN_PUBLIC values value) // outputs the data to variable
up=$(/root/bashjson/bashjson.sh test1.json metrics UP_PUBLIC values value)


newdown=$(printf "%.14f" $down)
newup=$(printf "%.14f" $up)


upp=$(printf "%.0f\n" "$newup") // removes scientific notation as bash does not like it
downn=$(printf "%.0f\n" "$newdown")

if (($upp>800000000000 | bc))
then
wondershaper -a eth0 -u 100000 //main command to limit
else
echo uppworks
fi

if (($downn>500000000000 | bc))
then
wondershaper -a eth0 -d 100000
else
echo downworks
fi

rm -rf output.txt test1.json

echo $upp
echo $downn

Вы всегда можете обновить его по своему усмотрению.

...