Comment utiliser lshw sous Linux (avec un exemple pratique)

0
19

Et s'il y avait une commande qui vous permettrait, dans un format facile à lire, de tout afficher du matériel de votre système Linux ? Bienvenue sur lshw, le formidable outil souvent négligé même par les professionnels Linux chevronnés.

Qu'est-ce que lshw ?

< p>lshw, un utilitaire ou un meilleur outil, installé par défaut lorsque vous installez Linux, vous fournit une liste du matériel tel qu'il se trouve dans votre système. On peut se souvenir de lshw en pensant à ls (la commande qui vous permet de lister le contenu du répertoire) et à hw pour le matériel.

Bien que l'outil dispose d'un bon nombre d'options de formatage, il fournit une sortie détaillée pour les périphériques qu'il trouve et peut détecter un grand nombre de types de périphériques, même les professionnels Linux chevronnés n'en ont peut-être pas entendu parler. Peut-être que d'autres outils ont pris trop d'importance sur les moteurs de recherche et similaires.

Actuellement, l'outil peut détecter les périphériques DMI (x86 et IA-64), OpenFirmware (PowerPC), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA, SCSI et USB.

< p>Vous pouvez même installer une version graphique du même outil en utilisant un package séparé, à savoir lshw-gtk. Alors que lshw n'a pas besoin d'être installé et est inclus par Linux par défaut si vous souhaitez explorer votre matériel dans une interface graphique plutôt qu'en ligne de commande (sur laquelle cet article se concentrera), installez lshw-gtk :

Installation de lshw-gtk

Pour installer lshw-gtk sur votre distribution Linux basée sur Debian/Apt (comme Ubuntu et Mint), exécutez la commande suivante dans votre terminal :

sudo apt install lshw-gtk

Publicité

Pour installer lshw-gtk sur votre distribution Linux basée sur RedHat/Yum (comme RHEL, Centos et Fedora), exécutez la commande suivante dans votre terminal :

sudo miam installer lshw-gtk

Si vous finissez par installer lshw-gtk, veuillez noter qu'il y a quelques bizarreries avec cet outil auxquelles on ne peut pas s'attendre. Pour commencer, il est recommandé d'utiliser sudo lshw-gtk à l'invite de votre terminal pour démarrer lshw-gtk, sinon toutes les informations sur le matériel pourraient ne pas être disponibles.

Ensuite, lorsque vous aurez démarré l'outil, vous voulez appuyer sur le bouton Actualiser près du haut car lshw-gtk n'analyse pas le matériel par défaut, mais uniquement à la demande.

Enfin, lorsque votre matériel est analysé quelques secondes plus tard , la sortie semble manquer à l'exception d'un seul Ordinateur de bureaudans la colonne la plus à gauche. Double-cliquez dessus, puis double-cliquez, par exemple Carte mère dans la deuxième colonne, et ainsi de suite. D'après ma propre expérience, j'ai trouvé que cet outil graphique particulier était, tout en travaillant, un peu limité.

Connaissez-vous la différence entre un plantage et une erreur et une assertion ? Notre article Asserts, erreurs et plantages explique la différence.

Exploration de lshw sur le terminal Linux

Lorsque vous exécutez lshw sur votre terminal Linux (qui peut généralement être démarré en appuyant sur la touche Windows + T de votre clavier, ou en appuyant sur l'icône principale du système d'exploitation (comme le cercle vert dans Linux Mint) et en tapant terminal), vous verrez une sortie longue et détaillée du matériel. lshw a fait ce qu'on lui a demandé de faire ; liste tout le matériel.

Publicité

Améliorons un peu ce travail en limitant la sortie à ce qui nous intéresse. Premièrement, nous devons explorer les classes matérielles de sortie disponibles.

Nous pouvons le faire avec lshw -short , ce qui rendra en même temps un aperçu plus court et beaucoup plus lisible de notre matériel. Néanmoins, la liste de sortie peut contenir 1 à 2 pages, selon les paramètres de votre terminal.

À ce stade, nous devons également nous rappeler de toujours utiliser lshw avec sudo. Cela garantira que la sortie ne sera pas incomplète ou inexacte. L'exécution de lshw en tant que sudo devrait être sûre (derniers mots célèbres !) car lshw est inclus par défaut dans les fichiers de distribution du noyau du système d'exploitation Linux ; on pourrait espérer qu'il a été soigneusement évalué.

sudo lshw -short | head -n6

Ici, nous avons demandé une courte liste de tout le matériel utilisant lshw -short, exécuté en tant que superutilisateur root en utilisant sudo, et limité aux six premières lignes de sortie en utilisant head -n6. Nous avons filéla sortie de lshw vers head en utilisant un tuyau Linux | qui est une méthode très pratique de post-analyse des informations rendues par un outil dans presque n'importe quel autre format requis.

En exécutant ceci dans VirtualBox, nous voyons une information immédiatement intéressante : lshw est conscient que le système et le bus est basé sur VirtualBox. On voit aussi que 8 Go de mémoire ont été attribués à cette VM (Virtual Machine).

Publicité

De plus, nous pouvons voir la classe des appareils répertoriés, ce que nous utiliserons dans notre prochain exemple lshw. Les noms de classe de périphérique utilisés dans lshw sont simples et faciles à retenir ; il y a système, bus, mémoire, pont, générique, multimédia, disque, entrée, volume, affichage, réseau, processeur et potentiellement quelques autres.

Utilisation d'une classe de périphérique pour interroger avec lshw

Maintenant que nous connaissons les noms de classe des périphériques, utilisons les mêmes en combinaison avec l'option -class (qui peut être abrégée en -C) pour rechercher uniquement les périphériques spécifiques qui nous intéressent. Par exemple, et si nous avions un moyen simple de détecter si le système que nous utilisions est une machine virtualisée fonctionnant sous VirtualBox spécifiquement ?

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 'Nous utilisons VirtualBox !'; else echo 'Ceci n'est pas une VM VirtualBox !'; fi

Ici, nous avons exécuté plusieurs commandes, en construisant à chaque fois la commande dans plus de complexité. Dans la première commande, nous interrogeons simplement lshw de la même manière qu'auparavant, mais cette fois avec l'option système supplémentaire -C pour répertorier uniquement les périphériques de la classe système.

Après une brève analyse (non illustrée dans la capture d'écran , car la sortie disparaît une fois l'analyse terminée), les périphériques de classe système sont affichés, qui dans ce cas est le système VirtualBox.

Dans la commande suivante, on ne saisit (sélectionne) que (grâce à l'option -o) le mot ‘VirtualBox’. Si la sortie ne contient pas ‘VirtualBox’, la commande ne produira aucune sortie.

Nous avons également ajouté une redirection stderr (sortie d'erreur standard) vers/dev/null en utilisant 2>/dev/null pour le cas étrange où sudo lshw renverrait une erreur. Il s'agit d'une technique de script couramment utilisée lors de la transmission d'informations d'une commande à une autre, bien qu'ici il y ait peut-être peu de possibilité qu'une erreur se présente (mais pas impossible).

Publicité

Dans la commande finale, nous insérons ce code dans un sous-shell ($(…)) puis dans une instruction if. Fondamentalement, nous demandons à l'interpréteur Bash de vérifier si la sortie de la deuxième commande correspond à ‘VirtualBox’.

Si c'est le cas, nous pouvons dire en toute confiance Nous utilisons VirtualBox ! . Si vous exécutez ce code sur votre machine, en supposant que vous utilisez Bash, comme interpréteur/shell de ligne de commande, et que vous n'utilisez pas VirtualBox, la sortie devrait être Ce n'est pas une machine virtuelle VirtualBox ! à la place .

Résumé

Dans cet article, nous avons exploré lshw et lshw-gtk, les outils Linux pour obtenir le matériel et le système détaillés informations à partir de la ligne de commande et à partir d'une interface graphique sur votre bureau. Après avoir exploré les classes de périphériques lshw, nous avons également examiné directement l'utilisation des informations lshw pour déterminer si nous fonctionnons dans VirtualBox ou non.

Si vous avez aimé lire cet article, vous pouvez lire Comment utiliser strace pour tracer Appels système et signaux ensuite !