Add network diagnostic reports
This commit is contained in:
1 parent
a23fc775e3
commit
43518d51cc
4 files changed
+756
-3
No files matched your search
@@ -0,0 +1,74 @@
|
||||
# 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 не управлява устройството или правата на текущия потребител
|
||||
не позволяват сканиране.
|
||||
Reference in new issue
Block a user