Автоматиза́ция произво́дства — это процесс в развитии машинного производства, при котором функции управления и контроля, ранее выполнявшиеся человеком, передаются приборам и автоматическим устройствам.
wikipedia.org
Введение
Каким бы не был удобным WEB интерфейс системы управления сетью, это все-равно будет не так удобно, как использование мессенджера Telegram, где все в одном приложении: от общения с друзьями и получения прогноза погоды до управления сетевыми устройствами. В дополнение, удобный API интерфейс платформы Telegram позволяет получить желаемый сервис с минимальными трудозатратами. В данной статье я приведу самый простой пример одного из таких решений.Состав системы
- Машина с ОС GNU/Linux Ubuntu/Debian (или другой на ваш вкус) на VPS в вашем любимом облачном сервисе (AWS, GCP, MS Azure, Linode...), будет достаточно 1Гб памяти, 1 CPU и 10Гб жесткого диска. Пример: Nanode 1 GB с Debian 10 за 5 EUR/мес на сервисе Linode
- VPN между сервером и сетью. Тут возможны разные варианты, могу только предложить следующие варианты
- L2TP VPN (самый простой вариант)
- OpenVPN (более функциональный и сложный вариант)
- Openconnect VPN (подходит если на площадке есть VPN сервис на базе Cisco ASA)
- Маршрутизация между сервером и сетью (можно выбрать как статическую маршрутизацию или в случае надобности можно построить динамическую маршрутизацию на базе Quagga)
- Telegram bot
- Python для обработки сообщений от Telegram бота через API и выполнения задач по настройке сетевого оборудования, подключения к камерам видео-наблюдения
- Git/Github (опционально)
Пример реализации с картинками
ИЗМЕНЕНИЕ VLAN НА ПОРТУ КОММУТАТОРА ДОСТУПА:
ПРОСМОТР ТЕКУЩИХ НАСТРОЕК VLAN-ОВ НА КОММУТАТОРАХ ДОСТУПА
АУДИТ ПОРТОВ КОММУТАТОРА ДОСТУПА и СОХРАНЕНИЕ НАСТРОЕК
ДОБАВЛЕНИЕ/УДАЛЕНИЕ VLAN с IP, DHCP пулом и пр.
ДОБАВЛЕНИЕ/УДАЛЕНИЕ ПРОБРОСОВ ПОРТОВ
ПРОСМОТР ТЕКУЩИХ НАСТРОЕК ПРОБРОСОВ ПОРТОВ
СОЗДАНИЕ ОГРАНИЧЕНИЙ СКОРОСТИ ИНТЕРНЕТА ДЛЯ VLAN
Дополнение 1. Мониторинг
Если есть Python и VPN до сети, не трудоно дополнить базовым мониторингом, опросом устройств по ICMP.Дополнение 2. Получение изображения с камер видео-наблюдения
Под капотом
В сети уже есть достаточно качественного контента, поэтому здесь не будет примеров кода. Он ничем не отличается от того, что уже было написано ранее.Создание к бота Telegram (telebot):
https://habr.com/ru/post/442800/
Подключение к сетевому оборудованию (Netmiko):
https://habr.com/ru/company/jetinfosystems/blog/336608/
Построение VPN туннелей:
https://habr.com/ru/post/354490/
https://habr.com/ru/post/233971/
Захват видео кадров с камер, тут информации не так много, ниже пример кода для двух вариантов захвата кадров: с RTSP потока и через WEB интерфейс.
import time
from datetime import datetime
import cv2
def get_image_rtsp(ip, name):
"""
Function get image from camera and write it to disk (use RTSP stream)
"""
user='admin'
passw="password"
url_pic = "rtsp://{}:554/profile1".format(ip)
time = str(datetime.now()).split(".")[0][0:-4].replace(" ", "-")
try:
cap = cv2.VideoCapture(url_pic)
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imwrite("static/{}.jpg_{}".format(name,time), frame)
cap.release()
cv2.destroyAllWindows()
def get_image_web(ip, name):
"""
Function get image from camera and write it to disk (use HTTP)
"""
user='admin'
passw="password"
url_pic = "http://{}:80/ISAPI/Streaming/channels/1/picture/".format(ip)
data = {}
headers = {}
files={"foo":"bar"}
auth1 = HTTPDigestAuth(user,passw)
s = requests.Session()
d = s.get(url_pic,auth=auth1,headers=headers,data=data,files=files)
time = str(datetime.now()).split(".")[0][0:-4].replace(" ", "-")
with open("static/{}.jpg_{}".format(name,time),'wb') as f:
f.write(d.content)
Безопасность
Для обеспечения должного уровня безопасности можно использовать 2 фактора авторизации:- Проверка по Telegram ID (уникальный номер)
- Проверка пользователя по PIN коду в начале сообщения
- Для каждой учетной записи может создаваться ограниченный список объектов
Ключевая ценность
Источник статьи: https://habr.com/ru/post/568114/