Come usare lshw in Linux (con un esempio pratico)

0
12

E se ci fosse un comando che ti permettesse, in modo semplice- formato da leggere, visualizzare tutto l'hardware nel sistema Linux? Benvenuto in lshw, il grande strumento spesso trascurato anche dai professionisti esperti di Linux.

Cos'è lshw?

< p>lshw, un'utilità, o uno strumento migliore, installato per impostazione predefinita quando si installa Linux, fornisce un elenco di hardware come si trova nel sistema. Si può ricordare lshw pensando a ls (il comando che consente di elencare i contenuti delle directory) e hw per l'hardware.

Anche se lo strumento ha un buon numero di opzioni di formattazione, fornisce un output dettagliato per i dispositivi che trova e è in grado di rilevare un numero consistente di tipi di dispositivi, anche i professionisti esperti di Linux potrebbero non averne sentito parlare. Forse altri strumenti hanno preso troppo di un front posting sui motori di ricerca e simili.

Attualmente, lo strumento è in grado di rilevare dispositivi DMI (x86 e IA-64), struttura dei dispositivi OpenFirmware (PowerPC), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA, SCSI e USB.

< p>Puoi persino installare una versione grafica dello stesso strumento utilizzando un pacchetto separato, ovvero lshw-gtk. Anche se lshw non ha bisogno di essere installato ed è incluso da Linux per impostazione predefinita se sei interessato ad esplorare il tuo hardware in una GUI piuttosto che nella riga di comando (su cui questo articolo si concentrerà), installa lshw-gtk:

Installazione di lshw-gtk

Per installare lshw-gtksulla tua distribuzione Linux basata su Debian/Apt (come Ubuntu e Mint), esegui il seguente comando nel tuo terminale:

sudo apt install lshw-gtk

Pubblicità

Per installare < i>lshw-gtk sulla tua distribuzione Linux basata su RedHat/Yum (come RHEL, Centos e Fedora), esegui il seguente comando nel tuo terminale:

sudo yum install lshw-gtk

Se finisci per installare lshw-gtk, tieni presente che ci sono alcune stranezze con questo strumento che potrebbero non essere previste. Per cominciare, si consiglia di utilizzare sudo lshw-gtk al prompt del terminale per avviare lshw-gtk, altrimenti non tutte le informazioni sull'hardware potrebbero essere disponibili.

Poi, una volta avviato lo strumento, vuoi premere il pulsante Aggiorna nella parte superiore poiché lshw-gtk non esegue la scansione dell'hardware per impostazione predefinita, ma solo su richiesta.

Infine, quando l'hardware viene scansionato pochi secondi dopo , l'output sembra mancare ad eccezione di un singolo computer desktopnella colonna più a sinistra. Fare doppio clic su questo, quindi fare doppio clic, ad esempio Scheda madre nella seconda colonna e così via. Nella mia esperienza, ho trovato che questo particolare strumento GUI sia, durante il lavoro, un po' limitato.

Conosci la differenza tra un arresto anomalo e un errore e un'asserzione? Il nostro articolo su Asserzioni, errori e arresti anomali spiega la differenza.

Esplorando lshw sul terminale Linux

Quando esegui lshw sul tuo terminale Linux (che di solito può essere avviato premendo il tasto Windows + T sulla tastiera o premendo l'icona principale del sistema operativo (come il cerchio verde in Linux Mint) e digitando terminale) vedrai un output lungo e dettagliato dell'hardware. lshw ha fatto ciò che era stato incaricato di fare; elenca tutto l'hardware.

Pubblicità

Facciamo in modo che funzioni un po' meglio limitando l'output a ciò che ci interessa. Innanzitutto dovremmo esplorare le classi hardware di output a nostra disposizione.

Possiamo farlo con lshw -short , che allo stesso tempo renderà una panoramica più breve e più leggibile del nostro hardware. Tuttavia, l'elenco di output può essere lungo 1-2 pagine, a seconda delle impostazioni del terminale.

Dovremmo anche a questo punto ricordarci di usare sempre lshw con sudo. Ciò garantirà che l'output non sarà incompleto o impreciso. L'esecuzione di lshw come sudo dovrebbe essere sicura (ultime parole famose!) poiché lshw è incluso di default nei file di distribuzione del core del sistema operativo Linux; si spera che sia stato valutato a fondo.

sudo lshw -short | head -n6

Qui abbiamo richiesto un breve elenco di tutto l'hardware che utilizza lshw – short, eseguito come superutente root usando sudo e limitato alle prime sei righe di output usando head -n6. Abbiamo trasmessol'output da lshw a head usando una pipe Linux | che è un metodo molto utile di post-analisi delle informazioni rese da uno strumento in quasi tutti gli altri formati richiesti.

Eseguendo questo in VirtualBox, vediamo immediatamente un'informazione interessante: lshw è consapevole che il sistema e il bus è basato su VirtualBox. Vediamo anche che 8GiB di memoria sono stati assegnati a questa VM (Virtual Machine).

Annuncio

Inoltre, possiamo vedere la classe dei dispositivi elencata, che è quella che useremo nel nostro prossimo esempio lshw. I nomi delle classi di dispositivi utilizzati in lshw sono semplici e facili da ricordare; c'è sistema, bus, memoria, bridge, generico, multimediale, disco, input, volume, display, rete, processore e potenzialmente pochi altri.

Utilizzo di una classe dispositivo per eseguire query con lshw

Ora che conosciamo i nomi delle classi dei dispositivi, usiamo lo stesso in combinazione con l'opzione -class (che può essere abbreviata in -C) per interrogare solo dispositivi specifici che ci interessano. Ad esempio, cosa succederebbe se avessimo un modo semplice per rilevare se il sistema che stavamo utilizzando è una macchina virtualizzata in esecuzione specificatamente in VirtualBox?

sudo lshw -short -C system sudo lshw -short -C system 2>/dev/null | grep -o 'VirtualBox' if [ “$(sudo lshw -short -C system 2>/dev/null | grep -o 'VirtualBox')” == 'VirtualBox' ]; then echo 'Stiamo usando VirtualBox!'; else echo 'Questa non è una VM VirtualBox!'; fi

Qui abbiamo eseguito più comandi, costruendo ogni volta il comando in una maggiore complessità. Nel primo comando interroghiamo semplicemente lshw nello stesso modo di prima, anche se questa volta con l'opzione di sistema extra -C per elencare solo i dispositivi della classe di sistema.

Dopo una breve scansione (non mostrata nello screenshot , poiché l'output scompare una volta completata la scansione), vengono mostrati i dispositivi della classe di sistema, che in questo caso è il sistema VirtualBox.

Nel prossimo comando, grep (select) solo per (grazie all'opzione -o) la parola ‘VirtualBox’. Se l'output non contiene ‘VirtualBox’, il comando non produrrà alcun output.

Abbiamo anche aggiunto e stderr (output di errore standard) il reindirizzamento a/dev/null utilizzando 2>/dev/null per il caso dispari in cui sudo lshw restituirebbe un errore. Questa è una tecnica di scripting comunemente usata quando si inviano informazioni da un comando a un altro, anche se forse qui ci sono poche possibilità che si presenti un errore (ma non impossibile).

Pubblicità

Nel comando finale, inseriamo questo codice in una subshell ($(…)) e poi in un'istruzione if. Fondamentalmente, stiamo chiedendo all'interprete Bash di verificare se l'output del secondo comando corrisponde a ‘VirtualBox’.

Se è così, possiamo dire con sicurezza che Stiamo usando VirtualBox! . Se esegui questo codice sulla tua macchina, supponendo che tu stia utilizzando Bash, come interprete/shell della riga di comando e che non stai utilizzando VirtualBox, l'output dovrebbe essere Questa non è una VM VirtualBox! .

Conclusioni

In questo articolo abbiamo esplorato lshw e lshw-gtk, gli strumenti Linux per ottenere hardware e sistema dettagliati informazioni dalla riga di comando e dall'interno di una GUI sul desktop. Dopo aver esplorato le classi di dispositivi lshw, abbiamo anche esaminato direttamente l'utilizzo delle informazioni lshw per stabilire se stiamo eseguendo all'interno di VirtualBox o meno.

Se ti è piaciuto leggere questo articolo, potresti leggere Come usare strace per tracciare Chiamate e segnali di sistema dopo!