Files
StrixScripts/System/network-diagnostic.md
2026-09-29 11:25:33 +03:00

74 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.<format>`, като форматът по подразбиране е TXT.
В non-interactive режим без `--output` отчетът се извежда към stdout; зададеният
`--format` определя сериализацията.
## Ограничения
Скриптът показва до десет уникални SSID, а не десет отделни BSSID; при
еднакво име се избира access point-ът с най-силен сигнал. Скритите мрежи
нямат SSID и се третират отделно по BSSID. Детайлите за PCI устройства
зависят от `lspci`, за USB устройствата от sysfs, а Ethernet link modes
зависят от `ethtool` и драйвера. Wi-Fi scan може да не се изпълни, ако
NetworkManager не управлява устройството или правата на текущия потребител
не позволяват сканиране.