Скрипт для отключения пользователей в Mikrotik RouterBoard по дате

Рейтинг
Оценка: 5Голосов: 1Комментарии: 3

Напишем скрипт, который будет выполнять отключение пользователей на устройствах Mikrotik Routerboard (Mikrotik RouterBoard 750, Mikrotik RouterBoard 750G, Mikrotik RouterBoard RB/450g) по дате.

 Mikrotik RouterBoard 433 Address List

Рис.1. Mikrotik RouterBoard 433 Address List.

Пишем скрипт, который при отрицательном балансе будет отключать пользователей по дате.

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

now_date = datetime.date.today()
cur_year = now_date.year
cur_month = now_date.month
cur_day = now_date.day
user_day = cur_day
user_month = cur_month

cur = mysql_db.db.cursor()
sql = (“”"SELECT login_user, ip_user, balance FROM users WHERE day = %s AND month = %s”"”) % (user_day, user_month)
cur.execute(sql)
action = cur.fetchall()
cur.close()

for x in action:
login_user = x[0]
ip_user = x[1]
balance = x[2]
if balance <= 0:

mip = ’192.168.4.253′
ml = ‘user1′
mp = ’1q2w3e’
exe = “/ip fi a disable [find address=%s]” % (ip_user)
print exe
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=ml, password=mp)
cmd = “%s” % (exe)
ssh.exec_command(cmd)
ssh.close()

else:
print “Не отключать”

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

cur = mysql_db.db.cursor()
sql = (“”"SELECT login_user, ip_user, balance FROM users WHERE day = %s AND month = %s”"”) % (user_day, user_month)
cur.execute(sql)
action = cur.fetchall()
cur.close()

Извлекаем логин, IP-адрес и баланс пользователей, если поле day равно переменной user_day, а поле month равно - user_month.

for x in action:
login_user = x[0]
ip_user = x[1]
balance = x[2]

В цикле for извлекаем значения из action и заносим в x, присваиваем значения переменным login_user, ip_user, balance.

if balance <= 0:  – Выполняем проверку: баланс пользователя меньше или равно ноль. Если да – отключаем пользователя в Mikrotik Routerboard.

mip = ’192.168.4.253′
ml = ‘user1′
mp = ’1q2w3e’
exe = “/ip fi a disable [find address=%s]” % (ip_user)
print exe
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(mip, port=22, username=ml, password=mp)
cmd = “%s” % (exe)
ssh.exec_command(cmd)
ssh.close()

Если нет, то выведем сообщение “Не отключать”.

 База данных

Рис.2. База пользователей.

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

 Скрипт для отключения пользователей по дате

Рис.3. Работа скрипта.

Как видно на рисунке, для первого и третьего пользователя скрипт выполнил команду отключения в Mikrotik Routerboard. Второй пользователь благополучно продолжил работу.

 Результат работы скрипта, отключение пользователей с отрицательным и нулевым баллансом

Рис.4. Результат работы скрипта.

Скрипт успешно справился с поставленной задачей и отключил пользователей по дате.

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

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

 

(Снят с производства)
 
2093 2483 грн грн 75 у.е.
Купить
 

(Снят с производства)

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

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

Ошибка:

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

Да Отмена

Об авторе Evgenij_Rudchenko

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