Подсчитываем трафик в Mikrotik RouterBoard с помощью скрипта Python

Если вы используете оборудование Mikrotik Routerboard: Mikrotik RouterBoard 1100, Mikrotik RouterBoard 1100AH, Mikrotik RouterBoard 433AH, у вас может возникнуть необходимость подсчета трафика. Вооружимся языком Python и напишем необходимый скрипт, который подсчитает трафик пользователя и, если нужно лимитировать трафик, выполнит проверку – превышен лимит или нет.

#!/usr/bin/env python
# -*- coding: utf_8 -*-
from paramiko import SSHClient
from paramiko import AutoAddPolicy

mip = ’192.168.4.1′
ml = ‘admin’
mp = ‘admin’

ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=ml, password=mp)
exe = “put [/queue simple get user101 byte]”
excmd2 = ssh.exec_command(exe)[1].read()
ssh.close()

limit = 3000
print excmd2
sp = []
sp = excmd2.split(“/”)
up = int(sp[0])
down = int(sp[1])

total = (up + down)/1048576
print total
if total >limit:
print “Превышен лимит”
else:
print “Не превышен лимит”

Разбираем скрипт:

Подключаем модули для работы с ssh протоколом:

from paramiko import SSHClient
from paramiko import AutoAddPolicy

Данные для соединения с Mikrotik Routerboard:

mip = ’192.168.4.1′
ml = ‘admin’
mp = ‘admin’

Соединяемся с Mikrotik и извлекаем данные из правила шейпера:

ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=ml, password=mp)
exe = “put [/queue simple get user101 byte]”
excmd2 = ssh.exec_command(exe)[1].read()
ssh.close()

 

Рис.1. Список правил шейпера Mikrotik Routerboard.

 

Рис.2. Данные о трафике пользователя.

limit = 3000 – создаем переменную limit и присваиваем ей значение 3000 мбайт;

sp = []  – создаем пустой список;

Данные извлекутся о входящем и исходящем трафике в таком виде: 672777878/3180111677.

sp = excmd2.split(“/”) – отделяем входящий и исходящий трафик, значения помещяем в список sp;
up = int(sp[0]) – присваиваем переменной up значение исходящего трафика;
down = int(sp[1]) – присваиваем переменной down значение входящего трафика;
total = (up + down)/1048576 – складываем переменные и переводим в мегабайты;
print total – выводим значение суммарного трафика на экран.

Выполняем проверку, если переменная total больше переменной limit, то выводим сообщение «Превышен лимит», если нет – «Не превышен лимит»

if total > limit:
print “Превышен лимит”
else:
print “Не превышен лимит”

 

Рис.3. Выполняем скрипт.

Естественно, простой вывод сообщения о превышении лимита нам ничего не даст. Эти сообщения целесообразней заменить на конкретные действия: отключение пользователя, превысившего лимит, или уменьшение скорости.


 

Пошаговая видеоинструкция по подсчёту трафика в Mikrotik RouterBoard с помощью скрипта Python:

 

 

Евгений Рудченко специально для ASP24.

Вас может заинтересовать

 
3273 грн 124.70 у.е.
Купить

Если Вы нашли ошибку в тексте, то выделите ее мышкой и нажмите Ctrl + Enter или нажмите здесь.

Сообщение об ошибке

Ошибка:

Ваш комментарий (не обязательно):

Да Отмена

Об авторе Evgenij_Rudchenko

Ник для комментариев: tx