Якщо ви використовуєте обладнання Mikrotik, то у вас може виникнути необхідність підрахунку трафіку. Напишем необхідний скрипт на Python, який підрахує трафік користувача і, якщо необхідно обмежувати трафік, виконає перевірку - перевищений ліміт чи ні.
#!/usr/bin/env python
# -*- coding: utf_8 -*-
# підключаємо модулі для роботи з протоколом 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()
# створюємо зміну limit і присвоюємо їй значення 3000 мбайт:
limit = 3000
print excmd2
# створюємо пустий список
sp = []
# дані витягуються про вхідний і вихідний трафік у вигляді: 672777878/3180111677
# відділяємо вхідний і вихідний трафік, значення розміщуємо в списку sp:
sp = excmd2.split("/")
# присвоюємо змінній up значення вихідного трафіка:
up = int(sp[0])
# присвоюємо змінній down значення вхідного трафіка:
down = int(sp[1])
# додаємо змінні і переводимо в мегабайти:
total = (up + down)/1048576
# виводимо значення сумарного трафіка на екран:
print total
# виконуємо перевірку, чи не більша змінна total змінної limit
if total >limit:
print "Перевищений ліміт"
else:
print "Ліміт не перевищений"
Список правил шейпера Mikrotik Routerboard.
Дані про трафік користувача.
Виконуємо скрипт.
Звичайно, просте виведення повідомлення про перевищення ліміту нам нічого не дає. Ці повідомлення доцільніше замінити на конкретні дії: від’єднання користувача, який перевищив ліміт, або зменшення швидкості.
Покрокова відеоінструкція для підрахунку трафіку в Mikrotik RouterBoard за допомогою сценарію Python:
Джерело: asp24.ru