>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C-plus-plus

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