Hopp til innhold

Задача: Дашборд сети

Relevante sider
Andre relevante sider
Skip to content

Это машинный перевод текста, который может содержать ошибки!

Вы должны разработать веб-дашборд с помощью Python и Flask.

Дашборд — это веб-страница, которая отображает информацию наглядным образом. В этом задании вам будут предоставлены примеры данных о различных устройствах в сети, а также потребуется использовать Flask и Jinja для представления этой информации.

Цель состоит не в том, чтобы создать реальную систему мониторинга прямо сейчас. Здесь вы будете прежде всего практиковаться в следующем:

  • Flask
  • маршруты (routes)
  • шаблоны (templates)
  • передаче информации из Python в HTML
  • условных операторов if и циклов for в Jinja
  • созданию аккуального и удобного для пользователя веб-сайта

Теория

Теорию можно найти в [[Flask 01 Level 1 - Установка и Маршруты|🍾 Флакс 1]].

Особенно прочтите раздел о шаблонизации (templating).

Если вам нужна дополнительная информация, вы также можете использовать официальную документацию Flask здесь: Документация Flask

Что-то другое, кроме Flask?

Если вы хотите использовать другой фреймворк, сначала спросите у преподавателя.


Данные, которые можно использовать ✅

Вы можете использовать следующие данные в качестве основы нажмите здесь
devices = [
    {
        "name": "Основной маршрутизатор",
        "ip": "192.168.1.1",
        "hostname": "router.local",
        "device_type": "Маршрутизатор",
        "status": "online",
        "response_time": 12,
        "location": "Серверная комната",
        "last_checked": "14:32:10",
        "uptime": "12 дней",
        "open_ports": [53, 80, 443],
        "os": "RouterOS",
        "notes": "Основной маршрутизатор для сети"
    },
    {
        "name": "Веб-сервер",
        "ip": "192.168.1.20",
        "hostname": "webserver.local",
        "device_type": "Сервер",
        "status": "online",
        "response_time": 34,
        "location": "Серверная комната",
        "last_checked": "14:32:12",
        "uptime": "4 дня",
        "open_ports": [22, 80, 443],
        "os": "Ubuntu Server",
        "notes": "Запускает внутренний сайт"
    },
    {
        "name": "Принтер",
        "ip": "192.168.1.50",
        "hostname": "printer-01.local",
        "device_type": "Принтер",
        "status": "offline",
        "response_time": None,
        "location": "Класс 204",
        "last_checked": "14:32:14",
        "uptime": None,
        "open_ports": [],
        "os": "Неизвестно",
        "notes": "Не ответил на последней проверке"
    },
    {
        "name": "ПК учителя",
        "ip": "192.168.1.101",
        "hostname": "teacher-pc.local",
        "device_type": "Компьютер",
        "status": "online",
        "response_time": 18,
        "location": "Класс 204",
        "last_checked": "14:32:16",
        "uptime": "6 часов",
        "open_ports": [445],
        "os": "Windows 11",
        "notes": ""
    },
    {
        "name": "NAS",
        "ip": "192.168.1.30",
        "hostname": "storage.local",
        "device_type": "Сервер хранения данных",
        "status": "warning",
        "response_time": 87,
        "location": "Серверная комната",
        "last_checked": "14:32:18",
        "uptime": "38 дней",
        "open_ports": [22, 80, 443, 445],
        "os": "TrueNAS",
        "notes": "Высокое время отклика"
    }
]

Вам не обязательно отображать всю информацию. Самостоятельно выбирайте то, что подходит для вашего дашборда. Вы также можете изменять, добавлять или удалять данные по желанию или если считаете, что какие-то из них неточны (например: может быть, время безотказной работы должно указываться в секундах? 🤔).


Задача

1. Создайте панель управления

Создайте веб-страницу, отображающую информацию об устройствах в сети.

Внешний вид панели управления зависит от вас.

Вы можете использовать, например:

  • карточки для каждого устройства
  • таблицы
  • индикаторы состояния
  • разделы
  • иконки
  • цвета
  • статистику или сводные данные

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


2. Использование Flask и маршрутов

Приложение должно использовать Flask.

Необходимо иметь минимум:

  • один маршрут для отображения главной страницы/дашборда
  • еще один дополнительный маршрут с другой функцией

Назначение дополнительного маршрута вы определяете сами.

Он может, например:

  • отображать информацию об одном конкретном устройстве
  • показывать только устройства в автономном режиме (offline)
  • отображать отдельную страницу статуса
  • показывать более подробную информацию
  • отображать простую страницу «О приложении» («About»)

3. Использование шаблонов

HTML-страницы должны находиться в папке с именем templates.

Данные следует передавать из кода на Python в шаблон с помощью Flask. Для динамического отображения информации необходимо использовать Jinja.

Решение должно использовать:

  • переменные
  • цикл for
  • проверку if

Следовательно, информацию обо всех устройствах не нужно вручную вписывать в HTML-код.


4. Отображение статуса в наглядной форме

Дашборд должен упрощать просмотр состояния устройств.

Например:

  • 🟢 Онлайн
  • 🟡 Предупреждение
  • 🔴 Не в сети

Вы можете использовать текст, CSS, иконки или другие визуальные решения.


5. Сделайте дашборд по своему вкусу

Не существует единственно верного способа решить эту задачу.

Подумайте над следующим:

  • Какая информация наиболее важна?
  • Что пользователь должен увидеть в первую очередь?
  • Что не нужно отображать?
  • Как можно наглядно показать статус?
  • Как сделать страницу аккуратной, даже если устройств много?
  • Вы можете использовать CSS и при необходимости JavaScript, если хотите это сделать.

Требования

Решение должно:

  • использовать Python и Flask
  • содержать как минимум два маршрута (routes)
  • использовать как минимум один шаблон HTML
  • передавать данные из Python в шаблон
  • использовать Jinja
  • содержать как минимум одну петлю <emp>for</emp>
  • содержать как минимум одну проверку if (<emp>if</emp>)
  • отображать несколько элементов из набора данных
  • иметь явный способ отображения статуса

Готово?

Вызов! — Улучшите дашборд

Если вы закончите, можете расширить решение.

Например, вы можете:

  • создать детальную страницу для каждого устройства
  • фильтровать устройства по статусу
  • сортировать устройства
  • отображать количество устройств онлайн/офлайн
  • показывать среднее время отклика
  • добавить поиск или фильтрацию
  • добавить больше устройств
  • создать графики или другую визуализацию
  • сделать дашборд адаптивным
  • разработать более продуманный дизайн
Дополнительное задание — Проверка реального сетевого соединения

Если вы хотите углубиться в тему, можно изучить, как с помощью Python проверять наличие ответа от реальных устройств в сети. Например, можно исследовать следующие аспекты:

  • ping
  • Nmap
  • порты и службы

Это не является обязательным требованием для базового задания.


Доставка

Сделай это

Отправь свою работу в GitHub, выполнив коммит.

Репозиторий должен содержать:

  1. Код на Python для приложения Flask
  2. Шаблоны HTML
  3. Файлы CSS и JavaScript (при наличии)
  4. Краткое описание того, как работает решение
  5. Краткое объяснение того, как вы использовали маршруты (routes) и шаблонизацию (templating)

Например, пояснения можно разместить в отдельном файле .md.