# network-diagnostic.sh Показва подробна информация за мрежовите интерфейси и хардуерните карти, след което сканира околните Wi-Fi мрежи и извежда до десетте най-силни. ## Какво прави За всеки интерфейс показва типа и състоянието, MAC и IP адресите, MTU, активната NetworkManager връзка, скоростта и наличните link modes. За физическите PCI/USB устройства показва модел, bus и драйвер; `lspci` добавя PCI описанието и kernel module информацията. Ако е наличен `ethtool`, се показват Ethernet скоростта и състоянието на link-а; използва се и скоростта, публикувана от драйвера в sysfs. Виртуалните интерфейси не се представят като физически Ethernet връзки и не получават подвеждаща скорост от veth/bridge. Изходът е подреден като физически Ethernet, физически Wi-Fi, веднага след тях топ 10 Wi-Fi scan, и накрая виртуалните интерфейси. Wi-Fi scan използва NetworkManager и заявява нов scan. Резултатите се сортират по сила на сигнала и се показват най-много десет различни SSID; ако едно SSID се вижда през няколко access point-а, показва се най-силният. В списъка има BSSID, канал, честота, сигнал и тип защита. Свързаната точка за достъп се отбелязва като `CONNECTED` и се оцветява в зелено в терминала; в HTML целият ред е оцветен. При няколко access point-а със същото SSID свързаният BSSID се запазва пред по-силен несвързан. При липса на NetworkManager се използва `iw` като fallback, ако е инсталиран и има права за scan. Скриптът е само за преглед и не променя мрежови настройки. След показването на TXT отчета интерактивно предлага запис в `~/report.txt`. Може да се зададе друг път и формат; поддържат се TXT, JSON и HTML. ## Изисквания - Linux, Bash и Python 3 - `ip` е задължителен за инвентара на интерфейсите - `nmcli` от NetworkManager се препоръчва за Wi-Fi scan - `lspci` и `ethtool` са незадължителни и добавят хардуерни/link детайли - `iw` е незадължителен fallback за Wi-Fi scan; някои драйвери изискват root права за сканиране с `iw` - За `nmcli` обикновено не са нужни root права ## Употреба ```bash ./System/network-diagnostic.sh ./System/network-diagnostic.sh --help ./System/network-diagnostic.sh --output "$HOME/network-report.json" --format json ./System/network-diagnostic.sh --output /tmp/network-report.html --force ./System/network-diagnostic.sh --format json ``` | Опция | Описание | |-------|----------| | `-o`, `--output PATH` | Записва директно във файл; без тази опция предлага интерактивен запис | | `-f`, `--format FORMAT` | Формат `txt`, `json` или `html`; без `--output` извежда формата към stdout в non-interactive режим | | `--force` | Позволява презапис на съществуващ файл без потвърждение | | `-h`, `--help` | Показва помощта и приключва | Без зададен `--format` форматът се разпознава от разширението на `--output`; ако няма поддържано разширение, се използва TXT. При интерактивен запис началният път е `~/report.`, като форматът по подразбиране е TXT. В non-interactive режим без `--output` отчетът се извежда към stdout; зададеният `--format` определя сериализацията. ## Ограничения Скриптът показва до десет уникални SSID, а не десет отделни BSSID; при еднакво име се избира access point-ът с най-силен сигнал. Скритите мрежи нямат SSID и се третират отделно по BSSID. Детайлите за PCI устройства зависят от `lspci`, за USB устройствата от sysfs, а Ethernet link modes зависят от `ethtool` и драйвера. Wi-Fi scan може да не се изпълни, ако NetworkManager не управлява устройството или правата на текущия потребител не позволяват сканиране.