Меню
Контакты
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Удаляем пользователей из Mikrotik Routerboard с помощью скрипта

 11 Май 2011    MikroTik, Scripts

 

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

 

 База пользователей Mikrotik Routerboard

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

 

Скрипт:

#!/usr/bin/env python

# -*- coding: utf_8 -*-

import MySQLdb

import mysql_db

from paramiko import SSHClient

from paramiko import AutoAddPolicy

cur = mysql_db.db.cursor()

sql = ("SELECT id, login_user, passwd_user, ip_user FROM users")

cur.execute(sql)

user_data = cur.fetchall()

cur.close()

print "\033[33m| %3s | %15s | %20s | %12s |\033[0m" % ('id', 'login_user', 'passwd_user', 'ip_user')

for sql_result in user_data:

id = sql_result[0]

login_user = sql_result[1]

passwd_user = sql_result[2]

ip_user = sql_result[3]

print "\033[33m| %3s | %15s | %20s | %12s |\033[0m" % (id, login_user, passwd_user, ip_user)

id_user = raw_input("Введите ID пользователя для удаления: ")

cur = mysql_db.db.cursor()

sql = ("SELECT login_user, ip_user FROM users WHERE id = '%s'") % (id_user)

cur.execute(sql)

user_data = cur.fetchone()

cur.close()

del_login = user_data[0]

del_ip = user_data[1]

cur = mysql_db.db.cursor()

sql = ("DELETE FROM users WHERE id = '%s'") % (id_user)

cur.execute(sql)

cur.close()

mtipaddress = '192.168.4.253'

mtlogin = 'user1'

mtpassword = '1q2w3e'

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mtipaddress, port=22, username=mtlogin, password=mtpassword)

cmd = "/ppp secret remove [find name=%s]" % (del_login)

ssh.exec_command(cmd)

ssh.close()

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mtipaddress, port=22, username=mtlogin, password=mtpassword)

queue = "/queue simple remove [find name=%s]" % (del_login)

ssh.exec_command(queue)

ssh.close()

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mtipaddress, port=22, username=mtlogin, password=mtpassword)

a_list = "/ip firewall address-list remove [find address=%s]" % (del_ip)

ssh.exec_command(a_list)

ssh.close()

 

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

Извлекаем всех пользователей  из базы данных:

cur = mysql_db.db.cursor()

sql = ("SELECT id, login_user, passwd_user, ip_user FROM users")

cur.execute(sql)

user_data = cur.fetchall()

cur.close()

Вводим шапку списка:

print "\033[33m| %3s | %15s | %20s | %12s |\033[0m" % ('id', 'login_user', 'passwd_user', 'ip_user')

Выводим данные о пользователях в списке:

for sql_result in user_data:

id = sql_result[0]

login_user = sql_result[1]

passwd_user = sql_result[2]

ip_user = sql_result[3]

print "\033[33m| %3s | %15s | %20s | %12s |\033[0m" % (id, login_user, passwd_user, ip_user)

Предлагаем ввести идентификатор пользователя, которого нужно удалить:

id_user = raw_input("Введите ID пользователя для удаления: ")

Извлекаем данные из базы о выбранном пользователе:

cur = mysql_db.db.cursor()

sql = ("SELECT login_user, ip_user FROM users WHERE id = '%s'") % (id_user)

cur.execute(sql)

user_data = cur.fetchone() – заносим данные в список

cur.close() 

del_login = user_data[0] – создаем переменную, содержащую логин для удаления.

del_ip = user_data[1] – создаем переменную с IP-адресом для удаления.

Удаляем пользователя с указанным ID: 

cur = mysql_db.db.cursor()

sql = ("DELETE FROM users WHERE id = '%s'") % (id_user)

cur.execute(sql)

cur.close()

mtipaddress = '192.168.4.253'

mtlogin = 'user1'

mtpassword = '1q2w3e'

Удаляем PPP данные пользователя:

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mtipaddress, port=22, username=mtlogin, password=mtpassword)

cmd = "/ppp secret remove [find name=%s]" % (del_login)

ssh.exec_command(cmd)

ssh.close()

Удаляем правило шейпера выбранного пользователя:

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mtipaddress, port=22, username=mtlogin, password=mtpassword)

queue = "/queue simple remove [find name=%s]" % (del_login)

ssh.exec_command(queue)

ssh.close()

Удаляем IP-адрес пользователя из Address-list:

ssh = SSHClient()

ssh.set_missing_host_key_policy(AutoAddPolicy())

ssh.connect(mtipaddress, port=22, username=mtlogin, password=mtpassword)

a_list = "/ip firewall address-list remove [find address=%s]" % (del_ip)

ssh.exec_command(a_list)

ssh.close()

 

 Mikrotik Routerboard PPP

Рис.2. Mikrotik Routerboard PPP.

 

 Mikrotik Routerboard Address-List remove

Рис.3. Mikrotik Routerboard Address-List remove.

 

 Mikrotik Routerboard Queue

Рис.4. Mikrotik Routerboard Queue.

 

 Удаляем пользователей в Mikrotik Routerboard с помощью скрипта

Рис.5. Запук скрипта.

 

Запустив скрипт, мы видим список пользователей.

 

 Удаляем пользователей в Mikrotik Routerboard с помощью скрипта

Рис.6. Удаление данных пользователей.

 

После того, как мы введем ID пользователя, скрипт удалит данные о пользователе из базы данных, сформирует и выполнит три правила для удаления всех данных о пользователе из Mikrotik Routerboard.

 

 Удаляем пользователей в Mikrotik Routerboard с помощью скрипта

Рис.7. Повторный запуск скрипта.

 

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

 

 База данных после выполнения скрипта удаления пользователей

Рис.8. База данных после выполнения скрипта.

 

База данных после выполнения скрипта не досчиталась одной учетной записи.

 

 Mikrotik Routerboard после выполнения скрипта удаления пользователей

Рис.9. Mikrotik Routerboard после выполнения скрипта.

 

После выполнения скрипта, данные о пользователе, которого мы выбрали, были удалены с Mikrotik Routerboard.

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