Skip to content

Latest commit

 

History

78 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetDiag (Windows, Python, Kivy)

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

Запуск GUI

Из корня проекта:

python -m netdiag

Или запустив главный файл напрямую:

python netdiag/__main__.py

После запуска:

  1. Нажмите «Старт мониторинга».
  2. Наблюдайте фиксированные столбцы ping по целям из targets.json (зелёный/жёлтый/красный).
  3. Нажмите «Сохранить отчёт» для экспорта текущего сеанса.
  4. Используйте кнопку «Перезагрузить цели» для обновления списка целей после редактирования targets.json.

Сборка в исполняемый файл (.exe)

Для создания standalone-приложения, не требующего установки Python:

  1. Установите PyInstaller:
pip install pyinstaller
  1. Очистите предыдущие артефакты сборки (если есть):
# PowerShell
Remove-Item -Recurse -Force build, dist, NetDiag.spec

# Или вручную удалите папки build, dist и файл NetDiag.spec
  1. Выполните сборку:
pyinstaller --onefile --windowed --name "NetDiag" --add-data "targets.json;." --add-data "netdiag/ui/main.kv;netdiag/ui" netdiag/__main__.py
  1. Готовый файл 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"
]

Для изменения количества или списка целей:

  1. Откройте targets.json в любом текстовом редакторе
  2. Измените список IP-адресов или доменных имён
  3. Сохраните файл
  4. В работающем приложении нажмите кнопку «Перезагрузить цели»

Формат отчёта .txt

Сеанс мониторинга 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages