Меню
Контакты
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   Сб-вс: выходной
Заказать звонок

Выбор свободных IP адресов для пользователей Mikrotik

 09 Мар 2011    MikroTik, Scripts

Добавляем пользователей в Mikrotik RouterBoard 750.

Теперь напишем скрипт, который будет проверять уже занятые ip-адреса  и предлагать нам свободный ip-адрес для присвоения пользователю.

 

#!/usr/bin/env python

# -*- coding: utf_8 -*-

import MySQLdb

import mysql_db

cur = mysql_db.db.cursor()

sql_ip_network = ("SELECT ip_network FROM ip_pool")

cur.execute(sql_ip_network)

data = cur.fetchone()[0]

cur.close()

cur2 = mysql_db.db.cursor()

sql_ip_user = ("SELECT ip_user FROM users")

cur2.execute(sql_ip_user)

data2 = cur2.fetchall()

cur2.close()

ip = data

list_ip = []

for x in range(2, 255):

list_ip.append(ip + str(x))

for x in list_ip:

if x not in [y[0] for y in data2]: break

print x +' free'

Создадим таблицу в базе данных. В ней будут хранится значения, на основании которых будут формироваться ip-адреса.

Выбор свободных IP адресов для пользователей mikrotik. Таблица ip_pool

Рис.1. Таблица ip_pool.

  

Выбор свободных IP адресов для пользователей mikrotik. База данных созданных пользователей.

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

cur = mysql_db.db.cursor()

sql_ip_network = ("SELECT ip_network FROM ip_pool")

cur.execute(sql_ip_network)

data = cur.fetchone()[0]

cur.close()

Извлекаем данные из таблицы ip_pool

cur2 = mysql_db.db.cursor()

sql_ip_user = ("SELECT ip_user FROM users")

cur2.execute(sql_ip_user)

data2 = cur2.fetchall()

cur2.close()

Извлекаем данные об ip-адресах пользователей.

ip = data # Присваиваем переменной ip значение data

list_ip = [] # Создаем пустой список

for x in range(2, 255): # Запускаем цикл

list_ip.append(ip + str(x)) # Выполняем конкатенацию, то есть склеиваем переменную ip со значениями x и заносим в список list_ip. Таким образом мы получили список со значениями от 172.17.1.2 до 172.17.1.254

for x in list_ip:

if x not in [y[0] for y in data2]: break

 

Выполняем проверку чтобы узнать, есть ли похожие ip-адреса в базе пользователей. Как только будет найден ip-адрес, который еще не присвоен пользователям, произойдет остановка.

print x +' free' # Выведет свободный ip-адрес.

Выбор свободных IP адресов для пользователей mikrotik. Запуск скрипта

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

Запускаем скрипт и видим результат. Таким образом мы убедились, что ip-адреса 172.17.1.2 нет в базе данных.

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