>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C-plus-plus

Zo haal je snel alle ins en outs van serverhardware in Linux op

Je SSH't naar een onbekende server en probeert uit te vinden wat er eigenlijk in zit. Welk moederbord heeft het, hoeveel geheugenmodules zijn bezet, op welke frequentie ze draaien, in welke modus de schijf staat.

Meestal eindig je met het gebruiken van een vertrouwde set verspreide commando's: lspci, lsusb, dmidecode, lscpu of het lezen van bestanden in /proc. Uiteindelijk zit je daar het totale plaatje in je hoofd aan elkaar te puzzelen.

Het lshw-hulpprogramma (Hardware Lister) lost deze routine volledig op. Het verzamelt computerconfiguratiegegevens in een uniforme hardwareboom. En het doet dit niet alleen in de console, maar exporteert ook alles naar kant-en-klare formaten zoals XML of HTML.

Wat lshw kan doen

Het programma scant het systeem via verschillende bronnen: het bevraagt DMI (SMBIOS) op x86 en EFI, kijkt in CPUID, parseert PCI/AGP-, USB-, SCSI- en IDE/ATA-buslijsten, en op PowerPC-architectuur leest het de OpenFirmware-apparaatboom.

Als resultaat krijg je een gedetailleerd rapport met alle hardware overzichtelijk weergegeven:

  • Precieze RAM-indeling: timings, grootte van elke module, bezette slots en ondersteund maximum.
  • BIOS/UEFI-firmwareversie en moederbordrevisie.
  • Processorconfiguratie, ondersteunde instructies, busfrequentie en cachegrootte op alle niveaus.
  • Opslagcontrollers, netwerkkaarten en aangesloten randapparaten met de kerneldrivers die ze gebruiken.

Een extra voordeel is dat het hulpprogramma niet alleen een ruw apparaat-ID uitvoert—het haalt leesbare namen op uit lokale databases hwdata en /usr/share/misc/.

Uitvoerformaten en praktische scenario's

De platte tekstuitvoer van lshw kan soms te lang lijken als je het commando zonder parameters uitvoert. Maar het heeft flexibele vlaggen die het leven een stuk gemakkelijker maken voor beheerders en infrastructuurontwikkelaars.

Compact overzicht

Wanneer je snel de algehele situatie wilt beoordelen zonder een eindeloze muur van tekst, is de beknopte modus handig:

sudo lshw -short

Het zal een nette tabel uitvoeren met de status van elke node, apparaatpaden en een korte beschrijving van componenten.

HTML-rapporten genereren

Als je inventaris met collega's wilt delen of de serverstatus aan een ticket wilt toevoegen, kun je met één commando een mooi HTML-bestand genereren:

sudo lshw -html > server_spec.html

Dit rapport is direct klaar om in een browser te bekijken, bevat begrijpelijke samenvouwbare secties en scheidt controllers visueel van onderliggende apparaten.

Automatisering via XML en JSON

Voor inventarisscripts of automatische machine-audits kan het hulpprogramma ruwe gestructureerde gegevens uitvoeren:

sudo lshw -xml > hardware.xml

Dit XML is eenvoudig te parsen in Python of in te voeren in een CMDB-database bij het opzetten van een nieuwe server.

Bouwen en onder de motorkap

Het project is geschreven in C++ en bestaat al heel lang. De code compileert zelfs met oude compilerversies en vereist geen zware afhankelijkheden.

Je kunt letterlijk in een paar seconden een binary uit de broncode bouwen:

make
sudo make install

Als je een minimalistische image bouwt voor systeemherstel (rescue disk), kan lshw statisch worden gecompileerd of gecomprimeerd met UPX zodat de binary vrijwel niets weegt:

make static
make compressed

Voor GUI-liefhebbers is er een lshw-gtk build beschikbaar (gebouwd via make gui), maar in de praktijk is de consoleversie meer dan voldoende.

Wie heeft er baat bij

Het hulpprogramma is waarschijnlijk niet nodig voor degenen die uitsluitend met containers of serverless-functies werken. Maar als je bare-metal servers opzet, een thuisserver bouwt, problemen met geheugenmoduledetectie diagnosticeert, of scripts schrijft voor het inventariseren van een fleet van machines, bespaart lshw enorm veel tijd. Voer het gewoon één keer uit met root-privileges en je weet precies welke hardware er in de behuizing is geïnstalleerd.

Gerelateerde projecten