У нас есть сеть с несколькими устройствами 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.
