Загрузка данных


10. Настроить удаленный доступ к активной сессии
Установи XRDP для удаленного подключения к графическому интерфейсу. После запуска службы сделай скриншот статуса. Если есть время, с основной системы открой “Подключение к удаленному рабочему столу” и подключись по IP виртуальной машины (рис. 10).
sudo apt install -y xrdp
sudo systemctl enable --now xrdp
sudo adduser xrdp ssl-cert
sudo systemctl status xrdp --no-pager
ВСТАВЬ СЮДА СКРИНШОТ 10
Terminal: xrdp active/running или окно RDP
Рисунок 10 – Настройка удаленного доступа XRDP
11. Создать группы пользователей
Создай группы по ролям: transport_dev для разработчиков, traffic_analysts для аналитиков, security_admins для администраторов. Добавь тестового пользователя analyst1. Это нужно для критерия групп пользователей и разграничения прав (рис. 11).
sudo groupadd transport_dev
sudo groupadd traffic_analysts
sudo groupadd security_admins
sudo useradd -m -s /bin/bash analyst1
sudo passwd analyst1
sudo usermod -aG traffic_analysts analyst1
getent group transport_dev traffic_analysts security_admins
id analyst1
ВСТАВЬ СЮДА СКРИНШОТ 11
Terminal: группы созданы, пользователь analyst1 есть
Рисунок 11 – Создание групп и пользователя для проекта
12. Настроить права доступа к ресурсам
Создай папку проекта /opt/transport_monitoring и выдай доступ группе traffic_analysts. Обычные пользователи не должны видеть рабочие данные без прав. На скриншоте покажи права через ls -ld (рис. 12).
sudo mkdir -p /opt/transport_monitoring
sudo chown root:traffic_analysts /opt/transport_monitoring
sudo chmod 750 /opt/transport_monitoring
ls -ld /opt/transport_monitoring
ВСТАВЬ СЮДА СКРИНШОТ 12
Terminal: drwxr-x--- root traffic_analysts
Рисунок 12 – Права доступа к каталогу проекта
13. Настроить аутентификацию и политику паролей
Установи модуль проверки сложности паролей. Это можно показать как первичную настройку аутентификации. После установки открой файл настроек или покажи установленный пакет (рис. 13).
sudo apt install -y libpam-pwquality
sudo grep -E "minlen|ucredit|lcredit|dcredit" /etc/security/pwquality.conf || true
dpkg -l | grep libpam-pwquality
ВСТАВЬ СЮДА СКРИНШОТ 13
Terminal: установлен libpam-pwquality
Рисунок 13 – Настройка проверки сложности паролей
14. Включить файрвол UFW
Разреши SSH, порт Grafana 3000 и включи UFW. Это относится к защите данных транспортного мониторинга и контролю доступа к системе (рис. 14).
sudo ufw allow OpenSSH
sudo ufw allow 3000/tcp
sudo ufw --force enable
sudo ufw status verbose
ВСТАВЬ СЮДА СКРИНШОТ 14
Terminal: Status active, OpenSSH и 3000/tcp allowed
Рисунок 14 – Настроенный межсетевой экран UFW
15. Настроить журнал мониторинга
Установи auditd и добавь правило наблюдения за каталогом проекта. Потом покажи активную службу и правило аудита. Это закрывает критерий “журнал мониторинга настроен” (рис. 15).
sudo apt install -y auditd audispd-plugins
sudo systemctl enable --now auditd
sudo auditctl -w /opt/transport_monitoring -p warx -k transport_watch
sudo auditctl -l
sudo systemctl status auditd --no-pager
ВСТАВЬ СЮДА СКРИНШОТ 15
Terminal: auditd active/running и правило transport_watch
Рисунок 15 – Настройка auditd для мониторинга каталога проекта
16. Создать точку восстановления VirtualBox
Выключи виртуальную машину или оставь в сохраненном состоянии. В VirtualBox выбери виртуальную машину, открой “Снимки” и нажми “Сделать”. Название: Before_transport_software. Это первая точка восстановления системы (рис. 16).
ВСТАВЬ СЮДА СКРИНШОТ 16
VirtualBox → Snapshots → Before_transport_software
Рисунок 16 – Создание снимка виртуальной машины
17. Сделать резервное копирование системы через Timeshift
Установи Timeshift, открой программу, выбери тип RSYNC, диск виртуальной машины и создай снимок. Если Timeshift не запускается, покажи установку и окно выбора типа снимка. Это будет резервная копия ОС (рис. 17).
sudo apt install -y timeshift
sudo timeshift --list
ВСТАВЬ СЮДА СКРИНШОТ 17
Окно Timeshift или terminal с timeshift --list
Рисунок 17 – Резервное копирование установленной ОС через Timeshift
18. Создать установочный образ системы
В VirtualBox можно экспортировать готовую виртуальную машину: “Файл – Экспорт конфигураций”. Формат оставь OVA, имя файла Var30_ITS.ova. Скриншот нужен на шаге выбора имени или завершения экспорта (рис. 18).
ВСТАВЬ СЮДА СКРИНШОТ 18
VirtualBox Export Appliance / Экспорт конфигураций
Рисунок 18 – Экспорт виртуальной машины в установочный образ OVA
19. Установить виртуальный принтер
Установи CUPS и PDF-принтер. После установки открой список принтеров или покажи пакет cups-pdf в терминале. Это закрывает критерий “установлен виртуальный принтер” (рис. 19).
sudo apt install -y cups cups-pdf
sudo systemctl enable --now cups
lpstat -p -d
ВСТАВЬ СЮДА СКРИНШОТ 19
Printers или Terminal: PDF printer
Рисунок 19 – Установленный виртуальный PDF-принтер
20. Установить базовое программное обеспечение
Поставь набор базовых программ: архиватор, офис, графический редактор, утилиты и Git. Это нужно показать как базовое ПО (рис. 20).
sudo apt install -y git curl wget unzip p7zip-full gimp libreoffice htop net-tools
ВСТАВЬ СЮДА СКРИНШОТ 20
Terminal: apt install completed
Рисунок 20 – Установка базового программного обеспечения
21. Установить Visual Studio Code и Python
Установи VS Code, Python, pip и venv. Создай папку проекта transport_monitoring. Открой эту папку в VS Code и сделай скриншот интерфейса редактора (рис. 21).
sudo snap install code --classic
sudo apt install -y python3 python3-pip python3-venv
mkdir -p ~/transport_monitoring
code ~/transport_monitoring
ВСТАВЬ СЮДА СКРИНШОТ 21
VS Code открыт в папке transport_monitoring
Рисунок 21 – Среда разработки VS Code для проекта транспортной аналитики
22. Создать виртуальное окружение Python и поставить библиотеки
В терминале VS Code или обычном терминале создай окружение и установи библиотеки для временных рядов, геоданных и прогноза. На скриншоте покажи успешную установку или список пакетов (рис. 22).
cd ~/transport_monitoring
python3 -m venv venv
source venv/bin/activate
pip install pandas numpy matplotlib scikit-learn statsmodels geopandas folium psycopg2-binary sqlalchemy
ВСТАВЬ СЮДА СКРИНШОТ 22
Terminal: pip install completed
Рисунок 22 – Python-библиотеки для анализа временных рядов и геоданных
23. Установить PostgreSQL и PostGIS
PostgreSQL будет хранить данные дорожных датчиков, а PostGIS позволит хранить координаты. После установки включи сервер и проверь статус (рис. 23).
sudo apt install -y postgresql postgresql-contrib postgis
sudo systemctl enable --now postgresql
sudo systemctl status postgresql --no-pager
ВСТАВЬ СЮДА СКРИНШОТ 23
Terminal: postgresql active/running
Рисунок 23 – Установка и запуск PostgreSQL/PostGIS
24. Создать базу данных транспортного мониторинга
Создай пользователя transport_user, базу transport_db и расширение PostGIS. На скриншоте покажи выполнение команд без ошибок (рис. 24).
sudo -u postgres psql <<EOF
CREATE USER transport_user WITH PASSWORD '12345';
CREATE DATABASE transport_db OWNER transport_user;
\c transport_db
CREATE EXTENSION IF NOT EXISTS postgis;
EOF
ВСТАВЬ СЮДА СКРИНШОТ 24
Terminal: CREATE ROLE, CREATE DATABASE, CREATE EXTENSION
Рисунок 24 – Создание базы данных transport_db и расширения PostGIS
25. Добавить тестовые данные дорожных датчиков
Вставь таблицу с датчиками, скоростью, количеством машин, индексом загруженности и координатами. Это демонстрирует данные транспортного мониторинга (рис. 25).
sudo -u postgres psql -d transport_db <<EOF
CREATE TABLE IF NOT EXISTS traffic_flow (
    id SERIAL PRIMARY KEY,
    sensor_name TEXT,
    road_name TEXT,
    measured_at TIMESTAMP,
    speed NUMERIC,
    cars_count INT,
    congestion NUMERIC,
    geom geometry(Point, 4326)
);
INSERT INTO traffic_flow(sensor_name, road_name, measured_at, speed, cars_count, congestion, geom)
SELECT 'S-' || g,
       CASE WHEN g % 3 = 0 THEN 'Lenina Ave' WHEN g % 3 = 1 THEN 'Central Ring' ELSE 'Station Road' END,
       NOW() - (g * INTERVAL '10 minutes'),
       40 + (random()*40)::int,
       50 + (random()*250)::int,
       round((random()*100)::numeric, 2),
       ST_SetSRID(ST_MakePoint(37.60 + random()/10, 55.70 + random()/10), 4326)
FROM generate_series(1, 80) AS g;
SELECT id, sensor_name, road_name, measured_at, speed, cars_count, congestion FROM traffic_flow LIMIT 10;
EOF
ВСТАВЬ СЮДА СКРИНШОТ 25
Terminal: SELECT из таблицы traffic_flow
Рисунок 25 – Тестовые данные транспортных датчиков в PostgreSQL
26. Установить QGIS для работы с геоданными
Установи QGIS, открой его, создай подключение к PostgreSQL/PostGIS и добавь слой traffic_flow. На карте должны появиться точки датчиков (рис. 26).
sudo apt install -y qgis
qgis
ВСТАВЬ СЮДА СКРИНШОТ 26
QGIS с точками датчиков на карте
Рисунок 26 – Отображение датчиков транспортного мониторинга в QGIS
27. Установить Grafana
Grafana будет основной системой визуализации транспортных потоков. Установи пакет, включи службу и открой адрес http://localhost:3000. Первый логин обычно admin/admin, затем задай новый пароль, например admin12345 (рис. 27).
sudo apt install -y apt-transport-https software-properties-common wget gpg
sudo mkdir -p /etc/apt/keyrings
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install -y grafana
sudo systemctl enable --now grafana-server
sudo systemctl status grafana-server --no-pager
ВСТАВЬ СЮДА СКРИНШОТ 27
Browser: http://localhost:3000 или terminal: grafana-server active
Рисунок 27 – Запущенная Grafana для визуализации транспортных потоков
28. Подключить PostgreSQL как источник данных Grafana
В Grafana открой Connections/Data sources, выбери PostgreSQL. Укажи host: localhost:5432, database: transport_db, user: transport_user, password: 12345. Нажми Save & test. Должно появиться сообщение об успешном подключении (рис. 28).
ВСТАВЬ СЮДА СКРИНШОТ 28
Grafana Data source PostgreSQL: Save & test OK
Рисунок 28 – Подключение PostgreSQL к Grafana
29. Создать дашборд транспортных потоков
Создай Dashboard. Добавь панели: средняя скорость, количество машин, индекс загруженности, таблица датчиков. В запросе используй таблицу traffic_flow. Итоговый дашборд является главным доказательством работы системы визуализации транспортных потоков (рис. 29).
Пример SQL для панели средней скорости:
SELECT
  measured_at AS time,
  avg(speed) AS avg_speed
FROM traffic_flow
GROUP BY measured_at
ORDER BY measured_at;

Пример SQL для таблицы датчиков:
SELECT sensor_name, road_name, speed, cars_count, congestion
FROM traffic_flow
ORDER BY measured_at DESC
LIMIT 20;
ВСТАВЬ СЮДА СКРИНШОТ 29
Grafana Dashboard: графики скорости, машин и загруженности
Рисунок 29 – Дашборд Grafana с показателями транспортных потоков
30. Создать скрипт прогноза загруженности дорог
В VS Code создай файл forecast.py. Скрипт читает данные из PostgreSQL и строит простой прогноз congestion. После запуска покажи результат в терминале. Это закрывает требование пакета для прогнозирования загруженности дорог (рис. 30).
cat > ~/transport_monitoring/forecast.py <<'EOF'
import pandas as pd
from sqlalchemy import create_engine
from sklearn.linear_model import LinearRegression

engine = create_engine("postgresql+psycopg2://transport_user:12345@localhost:5432/transport_db")
df = pd.read_sql("SELECT measured_at, speed, cars_count, congestion FROM traffic_flow ORDER BY measured_at", engine)
df["t"] = range(len(df))
X = df[["t", "speed", "cars_count"]]
y = df["congestion"]
model = LinearRegression().fit(X, y)
last = df.iloc[-1]
future = pd.DataFrame([{"t": len(df)+1, "speed": last.speed, "cars_count": last.cars_count + 20}])
pred = model.predict(future)[0]
print("Прогноз загруженности дороги на следующий интервал:", round(float(pred), 2), "%")
EOF
cd ~/transport_monitoring
source venv/bin/activate
python forecast.py
ВСТАВЬ СЮДА СКРИНШОТ 30
Terminal: Прогноз загруженности дороги ... %
Рисунок 30 – Результат прогноза загруженности дороги
31. Проверить защиту от вредоносного ПО
Установи ClamAV и выполни проверку домашней папки или каталога проекта. Если обновление баз занимает много времени, покажи факт установки и запуск проверки. Это относится к защите данных транспортного мониторинга (рис. 31).
sudo apt install -y clamav clamav-daemon
sudo freshclam || true
clamscan -r ~/transport_monitoring | tail -n 15
ВСТАВЬ СЮДА СКРИНШОТ 31
Terminal: clamscan summary
Рисунок 31 – Проверка каталога проекта антивирусным сканером ClamAV
32. Финальный экран демонстрации
В конце открой рядом или по очереди: Grafana Dashboard, QGIS с точками датчиков, терминал со статусом UFW/SSH/auditd и VS Code со скриптом forecast.py. На итоговом скриншоте должно быть видно, что вариант 30 выполнен комплексно (рис. 32).
sudo ufw status
systemctl is-active ssh xrdp auditd grafana-server postgresql
ВСТАВЬ СЮДА СКРИНШОТ 32
Grafana/QGIS/Terminal или общий итоговый экран
Рисунок 32 – Итоговая демонстрация выполненного варианта 30
Минимальный набор, если времени мало
Если на экзамене не успеваешь сделать все идеально, обязательно покажи хотя бы эти доказательства: установленная Ubuntu, интернет, SSH, удаленный доступ, UFW, пользователи/группы, резервная копия или снимок VirtualBox, PostgreSQL с таблицей traffic_flow, QGIS с точками датчиков, Grafana Dashboard и Python-прогноз. Это закрывает основную часть критериев и напрямую связано с вариантом 30.