мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
zadanie_6._mikrotik [2024/04/20 01:20] wikiadminzadanie_6._mikrotik [2024/06/08 06:43] (текущий) – [Пишем скрипт получения данных с Mikrotik] wikiadmin
Строка 18: Строка 18:
  
 Сделаем Ping до маршрутизатора: Сделаем Ping до маршрутизатора:
-  Ping 192.168.111.2+  ping 192.168.111.2
 Если в ответе увидим Если в ответе увидим
   64 bytes from 192.168.111.2: icmp_seq=1 ttl=64 time=0.072 ms   64 bytes from 192.168.111.2: icmp_seq=1 ttl=64 time=0.072 ms
Строка 29: Строка 29:
  
 Для удаленного доступа на маршрутизатор используем программу ssh: Для удаленного доступа на маршрутизатор используем программу ssh:
-  Ssh –l user1 192.168.111.2 interface wireless registration-table print+  ssh –l user1 192.168.111.2 interface wireless registration-table print 
 + 
 +<bootnote critical>В строке выше -l это латинская строчная маленькая L, а не -1 (минус единица)</bootnote> 
 Эта команда задаёт имя пользователя = user1 и передает маршрутизатору команду получения списка пользователей WiFi:  Эта команда задаёт имя пользователя = user1 и передает маршрутизатору команду получения списка пользователей WiFi: 
   interface wireless registration-table print   interface wireless registration-table print
Строка 49: Строка 52:
   apt list | grep python3-librouteros   apt list | grep python3-librouteros
 Устанавливаем библиотеку Устанавливаем библиотеку
-  sudo apt install python3- librouteros+  sudo apt install python3-librouteros
 Ещё раз проверяем наличие пакета. Ещё раз проверяем наличие пакета.
  
Строка 99: Строка 102:
   cur = con.cursor()   cur = con.cursor()
 Затем внутри цикла сформируем строку вставки данных в таблицу SQL: Затем внутри цикла сформируем строку вставки данных в таблицу SQL:
-  Insert = “INSERT INTO registrations (mac, signal) VALUES (‘” + item[‘mac-address’] + “’,’” + item[‘signal-strength-ch1’] + “’)”+  insert = “INSERT INTO registrations (mac, signal) VALUES (‘” + item[‘mac-address’] + “’,’” + str(item[‘signal-strength-ch1’]+ “’)”
 Для проверки выведем получившуюся команду на экран: Для проверки выведем получившуюся команду на экран:
-  Print(insert)+  print(insert)
 Выполним скрипт, проверим правильно ли сформирована команда вставки данных. Выполним скрипт, проверим правильно ли сформирована команда вставки данных.
 Вставка данных в таблицу SQL выполняется командами: Вставка данных в таблицу SQL выполняется командами:
-  Cur.execute(insert) +  cur.execute(insert) 
-  Con.commit()+  con.commit()
 В конце скрипта добавим: В конце скрипта добавим:
-  Cur.close()+  cur.close()
 Выполним скрипт и проверим наличие данных в таблице SQL: Выполним скрипт и проверим наличие данных в таблице SQL:
-  Sqlite3 pythondb +  sqlite3 pythondb 
-  Select * from registrations+  select * from registrations
 Видим, что новые записи добавляются в дополнение ранее добавленным. Видим, что новые записи добавляются в дополнение ранее добавленным.
 Для того, чтобы получить в таблице только актуальные данные нужно предварительно очистить таблицу registrations SQL-командой: Для того, чтобы получить в таблице только актуальные данные нужно предварительно очистить таблицу registrations SQL-командой:
   DELETE FROM registrations   DELETE FROM registrations
 Напишем в скрипте перед циклом: Напишем в скрипте перед циклом:
-  Cur.execute(“DELETE FROM registrations”) +  cur.execute(“DELETE FROM registrations”) 
-  Con.commit()+  con.commit()
  
 __Итоговый скрипт__ __Итоговый скрипт__
Строка 122: Строка 125:
 from librouteros import connect from librouteros import connect
 import sqlite3 import sqlite3
- con = sqlite3.connect('/home/bsk23-01-student-1/python/pythondb')+con = sqlite3.connect('/home/bsk23-01-student-1/python/pythondb')
 cur = con.cursor() cur = con.cursor()
 api = connect(host='192.168.111.2',username='user1',password='mikrotik') api = connect(host='192.168.111.2',username='user1',password='mikrotik')
 wifiuser=api.path('interface’, ‘wireless’, ‘registration-table’) wifiuser=api.path('interface’, ‘wireless’, ‘registration-table’)
-Cur.execute(“DELETE FROM registrations”) +cur.execute(“DELETE FROM registrations”) 
- Con.commit() +con.commit() 
-for item in wifiuser +for item in wifiuser: 
-Insert = “INSERT INTO registrations (mac, signal) VALUES (‘” + item[‘mac-address’] + “’,’” + item[‘signal-strength-ch1’] + “’)” + insert = “INSERT INTO registrations (mac, signal) VALUES (‘” + item[‘mac-address’] + “’,’” + str(item[‘signal-strength-ch1’]+ “’)” 
-Cur.execute(insert) + cur.execute(insert) 
- Con.commit()+ con.commit()
 api.close() api.close()
 </code> </code>
-//**Теперь наш сайт показывает данные о пользователях**//+ 
 +При выполнении, скрипт не выводит никакой информации на экран. Скрипт считывает с маршрутизатора список MAC-адресов активных WiFi пользователей и записывает этот список в базу данных в таблицу registrations. 
 + 
 +Теперь у нас в таблице registrations базы данных есть список MAC-адресов активных пользователей WiFi, но в таблице users для пользователей указаны не корректные MAC-адреса (столбец mac). 
 + 
 +Для того, чтобы запрос (который вы делали в самостоятельной работе) показывал список активных пользователей необходимо, чтобы в таблице users были пользователи с правильными MAC-адресами. 
 + 
 +Зайдите в sqlite3 (в команде укажите правильный путь к вашей базе данных): 
 +  sqlite3 pythondb 
 +   
 +Добавьте записи пользователей к правильными MAC-адресами, которые у вас попали в таблицу registrations (вместо mac3, mac1 и mac5 укажите нужные MAC-адреса): 
 +  INSERT INTO registrations (mac, signal) VALUES ('mac3', '-72'), ('mac1','-85'), ('mac5','-69'); 
 +   
 +Проверьте, что у вас в таблице users добавились записи: 
 +  SELECT * FROM users; 
 + 
 +//**Если всё сделано корректно то теперь наш сайт показывает данные об активных пользователях сети WiFi**//
 Написанный вами на самостоятельной работе скрипт отображает список пользователей WiFi сети из базы данных. Написанный вами на самостоятельной работе скрипт отображает список пользователей WiFi сети из базы данных.