Пишем скрипт, который будет выполнять удаление пользователей из 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()
Рис.2. Mikrotik Routerboard PPP.
Рис.3. Mikrotik Routerboard Address-List remove.
Рис.4. Mikrotik Routerboard Queue.
Рис.5. Запук скрипта.
Запустив скрипт, мы видим список пользователей.
Рис.6. Удаление данных пользователей.
После того, как мы введем ID пользователя, скрипт удалит данные о пользователе из базы данных, сформирует и выполнит три правила для удаления всех данных о пользователе из Mikrotik Routerboard.
Рис.7. Повторный запуск скрипта.
При повторном запуске скрипта мы увидим, что список пользователей уменьшился.
Рис.8. База данных после выполнения скрипта.
База данных после выполнения скрипта не досчиталась одной учетной записи.
Рис.9. Mikrotik Routerboard после выполнения скрипта.
После выполнения скрипта, данные о пользователе, которого мы выбрали, были удалены с Mikrotik Routerboard.
Евгений Рудченко специально для ASP24.









