Hoe lshw in Linux te gebruiken (met een praktisch voorbeeld)

0
168

Wat als er een commando was waarmee je, in een gemakkelijk- to-read-formaat, alle hardware in uw Linux-systeem bekijken? Welkom bij lshw, de geweldige tool die zelfs door ervaren Linux-professionals vaak over het hoofd wordt gezien.

Wat is lshw?

< p>lshw, een hulpprogramma of beter hulpmiddel, dat standaard wordt geïnstalleerd wanneer u Linux installeert, biedt u een lijst met hardware zoals gevonden in uw systeem. Je kunt lshw onthouden door te denken aan ls (het commando waarmee je de inhoud van mappen kunt weergeven) en hw voor hardware.

Hoewel het hulpprogramma een groot aantal opmaakopties heeft, geeft het gedetailleerde uitvoer voor de gevonden apparaten en kan een groot aantal apparaattypen detecteren, zelfs doorgewinterde Linux-professionals hebben er misschien nog nooit van gehoord. Misschien hebben andere tools te veel aandacht gekregen voor het plaatsen van berichten op zoekmachines en dergelijke.

Momenteel kan de tool DMI (x86 en IA-64), OpenFirmware device tree (PowerPC), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA, SCSI en USB-apparaten detecteren.

< p>Je kunt zelfs een grafische versie van dezelfde tool installeren met een apart pakket, namelijk lshw-gtk. Hoewel lshw niet hoeft te worden geïnstalleerd en standaard door Linux wordt meegeleverd als u geïnteresseerd bent in het verkennen van uw hardware in een GUI in plaats van op de opdrachtregel (waarop dit artikel zich richt), installeert u lshw-gtk:

Installatie van lshw-gtk

Om lshw-gtk te installerenop uw op Debian/Apt gebaseerde Linux-distributie (zoals Ubuntu en Mint), voert u de volgende opdracht uit in uw terminal:

sudo apt install lshw-gtk

Advertentie

Om te installeren < i>lshw-gtk op je op RedHat/Yum gebaseerde Linux-distributie (zoals RHEL, Centos en Fedora), voer je het volgende commando uit in je terminal:

sudo yum install lshw-gtk

Als je uiteindelijk lshw-gtk installeert, houd er dan rekening mee dat er een paar eigenaardigheden zijn met deze tool die je misschien niet verwacht. Om te beginnen is het raadzaam om sudo lshw-gtk te gebruiken bij de prompt van uw terminal om lshw-gtk te starten, omdat anders mogelijk niet alle hardware-informatie beschikbaar is.

Vervolgens, wanneer u de tool hebt gestart, zult u wilt op de knop Vernieuwen bovenaan klikken, aangezien lshw-gtk standaard geen hardware scant, maar alleen op aanvraag.

Eindelijk, wanneer uw hardware een paar seconden later wordt gescand , lijkt de uitvoer te ontbreken behalve een enkele Desktop Computerin de meest linkse kolom. Dubbelklik hierop, dubbelklik vervolgens op bijvoorbeeld Moederbord in de tweede kolom, enzovoort. In mijn eigen ervaring heb ik gemerkt dat deze specifieke GUI-tool tijdens het werken een beetje beperkt is.

Ken je het verschil tussen een crash en een fout en een bewering? Ons artikel Beweringen, fouten en crashes legt het verschil uit.

Verkenning van lshw op de Linux Terminal

Wanneer je lshw uitvoert op je Linux Terminal (die meestal kan worden gestart door op de Windows-toets + T op je toetsenbord te drukken, of door op het hoofdpictogram van het besturingssysteem te drukken (zoals de groene cirkel in Linux Mint) en terminal) ziet u een lange en uitgebreide uitvoer van hardware. lshw deed wat hem was opgedragen; lijst alle hardware.

Advertentie

Laten we dit een beetje beter laten werken door de uitvoer te beperken tot waar we in geïnteresseerd zijn. Ten eerste moeten we de hardwareklassen van de uitvoer die voor ons beschikbaar zijn onderzoeken.

We kunnen dit doen met lshw -short , die tegelijkertijd een korter, veel leesbaarder overzicht van onze hardware zal geven. Toch kan de uitvoerlijst 1-2 pagina's lang zijn, afhankelijk van uw terminalinstellingen.

We moeten er op dit punt ook aan denken om altijd lshw met sudo te gebruiken. Dit zorgt ervoor dat de uitvoer niet onvolledig of onnauwkeurig is. Het uitvoeren van lshw als sudo zou veilig moeten zijn (beroemde laatste woorden!) aangezien lshw standaard is opgenomen in de kerndistributiebestanden van het Linux-besturingssysteem; je zou hopen dat het grondig is geëvalueerd.

sudo lshw -short | head -n6

Hier hebben we een korte lijst opgevraagd van alle hardware met lshw – kort, uitgevoerd als de root-superuser met behulp van sudo, en beperkt tot de eerste zes uitvoerregels met head -n6. We doorgesluisdde uitvoer van lshw naar head met behulp van een Linux-pipe | wat een erg handige methode is om informatie die door een tool wordt weergegeven, achteraf te ontleden in een bijna elk ander formaat dat nodig is.

Als we dit in VirtualBox uitvoeren, zien we een onmiddellijk interessant stukje informatie: lshw is zich ervan bewust dat het systeem en bus is gebaseerd op VirtualBox. We zien ook dat 8GiB aan geheugen is toegewezen aan deze VM (Virtual Machine).

Advertentie

Wat ook belangrijk is, is dat we kunnen zien dat de klasse van apparaten wordt vermeld, wat we in ons volgende lshw-voorbeeld zullen gebruiken. De apparaatklassenamen die in lshw worden gebruikt, zijn duidelijk en gemakkelijk te onthouden; er is een systeem, bus, geheugen, bridge, generiek, multimedia, schijf, invoer, volume, display, netwerk, processor en mogelijk nog een paar andere.

Een apparaatklasse gebruiken om te zoeken met lshw

Nu we de klassenamen van het apparaat kennen, laten we dezelfde gebruiken in combinatie met de optie -class (die kan worden afgekort tot -C) om alleen specifieke apparaten te zoeken waarin we geïnteresseerd zijn. Wat als we bijvoorbeeld een gemakkelijke manier om te detecteren of het systeem dat we gebruikten een gevirtualiseerde machine is die specifiek onder VirtualBox draait?

sudo lshw -short -C systeem sudo lshw -short -C systeem 2>/dev/null | grep -o 'VirtualBox' if [ “$(sudo lshw -short -C system 2>/dev/null | grep -o 'VirtualBox')” == 'VirtualBox' ]; dan echo 'We gebruiken VirtualBox!'; else echo 'Dit is geen VirtualBox VM!'; fi

Hier hebben we meerdere commando's uitgevoerd, waarbij we het commando elke keer ingewikkelder hebben gemaakt. In de eerste opdracht vragen we eenvoudigweg lshw op dezelfde manier als voorheen, maar deze keer met de extra -C systeemoptie om alleen apparaten uit de systeemklasse weer te geven.

Na een korte scan (niet getoond in de schermafbeelding) , aangezien de uitvoer verdwijnt zodra het scannen is voltooid), worden de systeemklasse-apparaten weergegeven, in dit geval het VirtualBox-systeem.

In het volgende commando grep (selecteren) we alleen (dankzij de -o optie) het woord ‘VirtualBox’. Als de uitvoer geen ‘VirtualBox’ bevat, levert de opdracht geen uitvoer op.

We hebben ook een stderr (standaardfoutuitvoer) omleiding toegevoegd naar/dev/null met 2>/dev/null voor het oneven geval waarin sudo lshw een fout zou opleveren. Dit is een veelgebruikte scripttechniek bij het doorsturen van informatie van het ene commando naar het andere, hoewel er hier misschien weinig kans is dat er een fout optreedt (maar niet onmogelijk).

Advertentie

In het laatste commando voegen we deze code in een subshell ($(…)) en vervolgens in een if-statement. Kortom, we vragen de Bash-interpreter om te controleren of de uitvoer van het tweede commando overeenkomt met ‘VirtualBox’.

Als dat zo is, kunnen we vol vertrouwen zeggen We gebruiken VirtualBox! . Als u deze code op uw machine uitvoert, ervan uitgaande dat u Bash gebruikt als uw opdrachtregelinterpreter/shell, en dat u geen VirtualBox gebruikt, zou de uitvoer Dit is geen VirtualBox VM! moeten zijn in plaats daarvan .

Afronding

In dit artikel hebben we lshw en lshw-gtk onderzocht, de Linux-tools voor het verkrijgen van gedetailleerde hardware en systemen informatie vanaf de opdrachtregel en vanuit een GUI op uw bureaublad. Na het verkennen van lshw-apparaatklassen, hebben we ook gekeken naar het rechtstreeks gebruiken van lshw-informatie om vast te stellen of we in VirtualBox draaien of niet.

Als je dit artikel met plezier hebt gelezen, wil je misschien lezen hoe je strace gebruikt om te traceren Volgende systeemoproepen en -signalen!