Меню
Контакты
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 по месту в базе

 06 Окт 2011    MikroTik, Scripts

У нас есть сеть с несколькими устройствами Mikrotik Routerboard (Mikrotik RouterBoard 1100AH, Mikrotik RouterBoard 433AH, Mikrotik RouterBoard RB435G). Напишем скрипт с функцией добавления данных об устройствах в базу данных. Эти данные пригодятся, когда мы будем добавлять клиентов.

Скрипт:

#!/usr/bin/env python

# -*- coding: utf_8 -*-

import MySQLdb

import mysql_db, os, sys, time

def f_new_device():

print "\033[33m ---------------------------\033[0m"

print "\033[33m| Добавить новое устройство |\033[0m"

print "\033[33m ---------------------------\033[0m"

time.sleep(1)

os.system('clear')

while True:

info_device = raw_input("Введите название для устройства: ")

if not info_device:

print "\033[31m| Вы не ввели название для устройства |\033[0m"

time.sleep(1)

else:

break

while True:

login_device = raw_input("Введите название имя Администратора: ")

if not login_device:

print "\033[31m| Вы не ввели имя Администратора |\033[0m"

time.sleep(1)

else:

break

while True:

passwd_device = raw_input("Введите пароль Администратора: ")

if not passwd_device:

print "\033[31m| Вы не ввели пароль Администратора |\033[0m"

time.sleep(1)

else:

break

while True:

ip_device = raw_input("Введите IP адрес устройства: ")

if not ip_device:

print "\033[31m| Вы не ввели IP адрес устройства |\033[0m"

time.sleep(1)

else:

break

cur = mysql_db.db.cursor()

sql = "SELECT id FROM devices WHERE ip_device = '%s'" % (ip_device)

res = cur.execute(sql)

cur.close()

r = int(res)

if r > 0:

print "IP адрес занят"

else:

print "Устройство добавлено"

cur = mysql_db.db.cursor()

sql = ("INSERT INTO devices (login_device, password_device, ip_device, info_device) VALUES ('%s', '%s', '%s', '%s')" % (login_device, passwd_device, ip_device, info_device))

cur.execute(sql)

cur.close()

if raw_input("Добавить новое устройство? y/n: ")!="y":

return()

else:

f_new_device()

 

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

Подключаем необходимые модули:

#!/usr/bin/env python

# -*- coding: utf_8 -*-

import MySQLdb

import mysql_db, os, sys, time

Создаем функцию с именем new_device:

def f_new_device():

Выводим на экран надпись "Добавить новое устройство":

print "\033[33m ---------------------------\033[0m"

print "\033[33m| Добавить новое устройство |\033[0m"

print "\033[33m ---------------------------\033[0m"

time.sleep(1) — приостанавливаем скрипт на одну секунду;

os.system('clear') — очищаем экран.

Теперь вводим название устройства. Это может быть, например, office или home. Долее запускаем цикл while, в нем будет выполняться функция raw_input().

Эта функция принимает данные, введенные администратором с клавиатуры, и присваивает это значение переменной info_device. После нажатия администратором клавиши enter выполниться проверка if not info_device:

Если администратор не ввел данные, то на экран выведется сообщение следующего содержания: "Вы не ввели название для устройства". После этого цикл while снова предложит ввести название оборудования.

Если же администратор ввел данные, выполниться оператор break, который прервет цик?л и скрипт продолжит работу.

while True:

info_device = raw_input("Введите название для устройства: ")

if not info_device:

print "\033[31m| Вы не ввели название для устройства |\033[0m"

time.sleep(1)

else:

break

На этом этапе администратору предлагается ввести логин для доступа к устройству Mikrotik Routerboard. Эти данные будут присвоены переменной login_device.

while True:

login_device = raw_input("Введите название имя Администратора: ")

if not login_device:

print "\033[31m| Вы не ввели имя Администратора |\033[0m"

time.sleep(1)

else:

break

 

В этом действии администратору нужно ввести пароль для доступа к оборудованию Mikrotik Routerboard. Данные будут присвоены переменной password_device.

while True:

passwd_device = raw_input("Введите пароль Администратора: ")

if not passwd_device:

print "\033[31m| Вы не ввели пароль Администратора |\033[0m"

time.sleep(1)

else:

break

Теперь администратор должен ввести IP-адрес для доступа к устройству Mikrotik Routerboard и эти данные будут присвоены переменной ip_device.

while True:

ip_device = raw_input("Введите IP адрес устройства: ")

if not ip_device:

print "\033[31m| Вы не ввели IP адрес устройства |\033[0m"

time.sleep(1)

else:

break

После того, как все данные были введены, создаем запрос к базе данных и извлекаем id устройства у которого IP-адрес соответствует переменной ip_device:

cur = mysql_db.db.cursor()

sql = "SELECT id FROM devices WHERE ip_device = '%s'" % (ip_device)

res = cur.execute(sql)

cur.close()

r = int(res) — полученное значение присваиваем переменой r.

Выполняем проверку: больше ли нуля переменная r. Если больше, то это значит, что в базе уже существует устройство с таким IP-адресом. Сообщаем об этом администратору. Если переменная r не больше нуля, то добавляем в поле devices введенные данные об устройстве.

if r > 0:

print "IP адрес занят"

else:

print "Устройство добавлено"

cur = mysql_db.db.cursor()

sql = ("INSERT INTO devices (login_device, password_device, ip_device, info_device) VALUES ('%s', '%s', '%s', '%s')" % (login_device, passwd_device, ip_device, info_device))

cur.execute(sql)

cur.close()

Задаем администратору вопрос: "Добавить новое устройство?". Если администратор не согласен, то функция закончит свою работу. Если же он выберет y, то функция запустится еще раз.

if raw_input("Добавить новое устройство? y/n: ")!="y":

return()

else:

f_new_device()

 

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