NetDiag — desktop-утилита для базовой диагностики сетевых соединений в ОС Windows.
Проект разработан в рамках курсовой работы по теме:
«Разработка утилиты диагностики сетевых соединений для ОС Windows на языке Python».
Предоставить простое GUI-приложение, которое:
- отображает ping по целям из
targets.jsonкак фиксированные столбцы (без прокрутки); - обновляет высоту столбцов каждую секунду;
- адаптивно масштабирует ось Y по текущим данным (
min..max+20%); - сохраняет отчёт сеанса в текстовый файл (
.txt).
/netdiag/config.py— загрузка и валидацияtargets.json./netdiag/models.py— Pydantic-модели конфигурации (Defaults,Target,AppConfig)./netdiag/checks/ping.py— запускping(Windows-n,-w), парсинг среднего времени./netdiag/checks/dns_check.py— DNS-резолвhost -> IP./netdiag/checks/tcp_ports.py— проверка доступности TCP-портов./netdiag/checks/traceroute.py— (опционально) запускtracertс компактным выводом./netdiag/checks/orchestrator.py— общий запуск всех проверок и сбор итогового текста./netdiag/ui/main.kv— разметка Kivy-интерфейса./netdiag/ui/app.py— логика GUI реального времени (Clock, fixed bars, сохранение отчёта)./netdiag/report.py— сохранение отчёта в.txtв папкуreports/.
- ОС: Windows
- Python: 3.13.12
Установка зависимостей:
pip install -r requirements.txtИз корня проекта:
python -m netdiagИли запустив главный файл напрямую:
python netdiag/__main__.pyПосле запуска:
- Нажмите «Старт мониторинга».
- Наблюдайте фиксированные столбцы ping по целям из
targets.json(зелёный/жёлтый/красный). - Нажмите «Сохранить отчёт» для экспорта текущего сеанса.
- Используйте кнопку «Перезагрузить цели» для обновления списка целей после редактирования
targets.json.
Для создания standalone-приложения, не требующего установки Python:
- Установите PyInstaller:
pip install pyinstaller- Очистите предыдущие артефакты сборки (если есть):
# PowerShell
Remove-Item -Recurse -Force build, dist, NetDiag.spec
# Или вручную удалите папки build, dist и файл NetDiag.spec- Выполните сборку:
pyinstaller --onefile --windowed --name "NetDiag" --add-data "targets.json;." --add-data "netdiag/ui/main.kv;netdiag/ui" netdiag/__main__.py- Готовый файл
NetDiag.exeпоявится в папкеdist.
Важно: Для корректной работы скопируйте NetDiag.exe и файл targets.json в одну папку перед запуском.
Программа читает список целей из файла targets.json, который должен находиться:
- В папке с исходным кодом при запуске через Python
- В той же папке, что и
.exeфайл при запуске собранного приложения
Формат targets.json:
[
"192.168.1.1",
"8.8.8.8",
"google.com",
"yandex.ru"
]Для изменения количества или списка целей:
- Откройте
targets.jsonв любом текстовом редакторе - Измените список IP-адресов или доменных имён
- Сохраните файл
- В работающем приложении нажмите кнопку «Перезагрузить цели»
Сеанс мониторинга ping
======================
Цели: 1) Router | 2) Google DNS | 3) Cloudflare DNS
2026-05-10 12:00:01 | 22 мс | 27 мс | 164 мс
2026-05-10 12:00:02 | 25 мс | 31 мс | 170 мс
2026-05-10 12:00:03 | 164 мс | 90 мс | 52 мс
[Router]
host: 192.168.0.1
ports: [80, 443]
ping: OK, avg=22 ms
dns: OK (IP: 192.168.0.1)
tcp: OK (open: [80, 443], closed: [])
----------------------------------------
[Google DNS]
host: 8.8.8.8
ports: [53]
ping: OK, avg=31 ms
dns: OK (IP: 8.8.8.8)
tcp: OK (open: [53], closed: [])
----------------------------------------
Файлы отчётов сохраняются в папку reports/ и имеют формат:
netdiag_report_YYYYMMDD_HHMMSS.txt
- Интерфейс реализован на Kivy + kivy-garden.graph.
- В текущей версии данные ping имитируются с интервалом 1 секунда.
- Формат сохранения отчёта — только
.txt.