Jak szybko poznać wszystkie szczegóły sprzętu serwera w Linuksie
Logujesz się SSH na nieznany serwer i próbujesz dowiedzieć się, co właściwie się w nim znajduje. Jaka to płyta główna, ile modułów pamięci jest zajętych, z jaką częstotliwością działają, w jakim trybie jest dysk.
Zazwyczaj kończysz na używaniu znajomego zestawu rozproszonych poleceń: lspci, lsusb, dmidecode, lscpu lub czytaniu plików w /proc. W końcu siedzisz tam, składając w głowie całościowy obraz.
Narzędzie lshw (Hardware Lister) całkowicie rozwiązuje tę rutynę. Zbiera dane konfiguracyjne komputera w ujednolicone drzewo sprzętu. I robi to nie tylko w konsoli, ale także eksportuje wszystko do gotowych formatów, takich jak XML czy HTML.
Co potrafi lshw
Program skanuje system poprzez kilka źródeł: wysyła zapytania do DMI (SMBIOS) na x86 i EFI, zagląda do CPUID, parsuje listy magistral PCI/AGP, USB, SCSI oraz IDE/ATA, a na architekturze PowerPC odczytuje drzewo urządzeń OpenFirmware.
W rezultacie otrzymujesz szczegółowy raport z całym sprzętem przedstawionym:
- Dokładny układ pamięci RAM: taktowanie, rozmiar każdego modułu, zajęte gniazda i obsługiwane maksimum.
- Wersja firmware'u BIOS/UEFI i rewizja płyty głównej.
- Konfiguracja procesora, obsługiwane instrukcje, częstotliwość magistrali i rozmiary pamięci cache na wszystkich poziomach.
- Kontrolery pamięci masowej, karty sieciowe i podłączone urządzenia peryferyjne z używanymi przez nie sterownikami jądra.
Dodatkową zaletą jest fakt, że narzędzie nie tylko wyprowadza surowe identyfikatory urządzeń — pobiera czytelne nazwy z lokalnych baz danych hwdata i /usr/share/misc/.
Formaty wyjściowe i praktyczne scenariusze
Wyjście lshw w postaci zwykłego tekstu może czasami wydawać się zbyt długie, jeśli uruchomisz polecenie bez parametrów. Ale ma elastyczne flagi, które znacznie ułatwiają życie administratorom i programistom infrastruktury.
Zwięzłe podsumowanie
Kiedy potrzebujesz szybko ocenić ogólny obraz bez niekończącej się ściany tekstu, przydaje się tryb skrócony:
sudo lshw -short
Wyświetli czystą tabelę ze statusem każdego węzła, ścieżkami urządzeń i krótkim opisem komponentów.
Generowanie raportów w HTML
Jeśli musisz udostępnić spis sprzętu współpracownikom lub dołączyć stan serwera do zgłoszenia, możesz wygenerować ładny plik HTML jednym poleceniem:
sudo lshw -html > server_spec.html
Taki raport jest od razu gotowy do przeglądania w przeglądarce, zawiera zrozumiałe zwijane sekcje i wizualnie oddziela kontrolery od urządzeń podrzędnych.
Automatyzacja przez XML i JSON
W przypadku skryptów inwentaryzacyjnych lub automatycznych audytów maszyn, narzędzie może wyprowadzać surowe dane strukturalne:
sudo lshw -xml > hardware.xml
Ten XML łatwo parsować w Pythonie lub przesyłać do bazy danych CMDB podczas konfiguracji nowego serwera.
Budowa i szczegóły techniczne
Projekt jest napisany w C++ i istnieje od bardzo dawna. Kod kompiluje się nawet ze starymi wersjami kompilatora i nie wymaga ciężkich zależności.
Binarny plik wykonywalny możesz zbudować ze źródeł dosłownie w kilka sekund:
make
sudo make install
Jeśli budujesz minimalistyczny obraz do odzyskiwania systemu (dysk ratunkowy), lshw można skompilować statycznie lub skompresować za pomocą UPX, dzięki czemu plik binarny waży prawie nic:
make static
make compressed
Dla entuzjastów GUI dostępna jest kompilacja lshw-gtk (budowana przez make gui), ale w praktyce wersja konsolowa jest w zupełności wystarczająca.
Kto znajdzie to przydatne
Narzędzie prawdopodobnie nie jest potrzebne tym, którzy pracują wyłącznie z kontenerami lub funkcjami bezserwerowymi. Ale jeśli konfigurujesz serwery bare-metal, budujesz domowy serwer, diagnozujesz problemy z wykrywaniem modułów pamięci lub piszesz skrypty do inwentaryzacji floty maszyn, lshw oszczędza mnóstwo czasu. Wystarczy uruchomić je raz z uprawnieniami roota, a będziesz dokładnie wiedział, jaki sprzęt jest zainstalowany w obudowie.
Powiązane projekty