16.07.2021       Выпуск 395 (12.07.2021 - 18.07.2021)       Статьи

Управление сетевой инфраструктурой через Telegram за 5 EUR/месяц

Каким бы не был удобным WEB интерфейс системы управления сетью, это все-равно будет не так удобно, как использование мессенджера Telegram, где все в одном приложении: от общения с друзьями и получения прогноза погоды до управления сетевыми устройствами. В дополнение, удобный API интерфейс платформы Telegram позволяет получить желаемый сервис с минимальными трудозатратами. В данной статье я приведу самый простой пример одного из таких решений.

Читать>>




Экспериментальная функция:

Ниже вы видите текст статьи по ссылке. По нему можно быстро понять ссылка достойна прочтения или нет

Просим обратить внимание, что текст по ссылке и здесь может не совпадать.

Автоматиза́ция произво́дства — это процесс в развитии машинного производства, при котором функции управления и контроля, ранее выполнявшиеся человеком, передаются приборам и автоматическим устройствам.

wikipedia.org

Введение

Каким бы не был удобным WEB интерфейс системы управления сетью, это все-равно будет не так удобно, как использование мессенджера Telegram, где все в одном приложении: от общения с друзьями и получения прогноза погоды до управления сетевыми устройствами. В дополнение, удобный API интерфейс платформы Telegram позволяет получить желаемый сервис с минимальными трудозатратами. В данной статье я приведу самый простой пример одного из таких решений.

Состав системы

  1. Машина с ОС GNU/Linux Ubuntu/Debian (или другой на ваш вкус) на VPS в вашем любимом облачном сервисе (AWS, GCP, MS Azure, Linode...), будет достаточно 1Гб памяти, 1 CPU и 10Гб жесткого диска. Пример: Nanode 1 GB с Debian 10 за 5 EUR/мес на сервисе Linode

  2. VPN между сервером и сетью. Тут возможны разные варианты, могу только предложить следующие варианты

  3. Маршрутизация между сервером и сетью (можно выбрать как статическую маршрутизацию или в случае надобности можно построить динамическую маршрутизацию на базе Quagga)

  4. Telegram bot

  5. Python для обработки сообщений от Telegram бота через API и выполнения задач по настройке сетевого оборудования, подключения к камерам видео-наблюдения

  6. Git/Github (опционально)

Пример реализации с картинками

ИЗМЕНЕНИЕ VLAN НА ПОРТУ КОММУТАТОРА ДОСТУПА:

В сообщении боту указывается условный номер коммутатора, номер или диапазон портов, номер VLANа
В сообщении боту указывается условный номер коммутатора, номер или диапазон портов, номер VLANа

ПРОСМОТР ТЕКУЩИХ НАСТРОЕК VLAN-ОВ НА КОММУТАТОРАХ ДОСТУПА

В сообщении боту указывается условный номер коммутатора
В сообщении боту указывается условный номер коммутатора

АУДИТ ПОРТОВ КОММУТАТОРА ДОСТУПА и СОХРАНЕНИЕ НАСТРОЕК

Запрос аудита портов и сохранения конфигаруции на оборудовании
Запрос аудита портов и сохранения конфигаруции на оборудовании
Результат аудита портов
Результат аудита портов

ДОБАВЛЕНИЕ/УДАЛЕНИЕ VLAN с IP, DHCP пулом и пр.

Запрос на добавление VLAN с SVI и DHCP пулом
Запрос на добавление VLAN с SVI и 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 фактора авторизации:

  1. Проверка по Telegram ID (уникальный номер)

  2. Проверка пользователя по PIN коду в начале сообщения

  3. Для каждой учетной записи может создаваться ограниченный список объектов

Бот - это только прослойка между виртуальной машиной и сервером. На сам сервер устанавливается межсетевой экран ufw, открыть только порт для SSH, еще рекомендуется поменять порт SSH на любой отличный от 22, а так же добавить уведомление о попытках авторизации.

Ключевая ценность






Разместим вашу рекламу

Пиши: mail@pythondigest.ru

Нашли опечатку?

Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Система Orphus