Cómo usar lshw en Linux (con un ejemplo práctico)

¿Qué pasaría si hubiera un comando que le permitiera, en un formato fácil de leer, ver todo el hardware en su sistema Linux? Bienvenido a lshw, la gran herramienta que a menudo se pasa por alto incluso por los profesionales experimentados de Linux.

Qué es esto lshw?

lshwUna utilidad, o más bien una herramienta, instalada de forma predeterminada al instalar Linux, proporciona una lista del hardware que se encuentra en el sistema. Se puede recordar lshw pensando en ls (el comando que le permite listar el contenido del directorio) e hw para hardware.

Si bien la herramienta tiene una buena cantidad de opciones de formato, proporciona resultados detallados para los dispositivos que encuentra y puede detectar una gran cantidad de tipos de dispositivos, incluso los profesionales experimentados de Linux pueden no haber oído hablar de ella. Quizás otras herramientas hayan tenido demasiada presencia en los motores de búsqueda y similares.

Actualmente, la herramienta puede detectar dispositivos DMI (x86 e IA-64), OpenFirmware (PowerPC), PCI / AGP, CPUID (x86), IDE / ATA / ATAPI, PCMCIA, SCSI y estructura de dispositivos USB.

Incluso puede instalar una versión gráfica de la misma herramienta utilizando un paquete separado, a saber lshw-gtk. Tiempo lshw no es necesario instalarlo y está incluido en Linux de forma predeterminada si está interesado en explorar su hardware en una GUI en lugar de la línea de comandos (en la que se centrará este artículo), instale lshw-gtk:

Instalación lshw-gtk

Instalar lshw-gtk en su distribución de Linux basada en Debian / Apt (como Ubuntu y Mint), ejecute el siguiente comando en su terminal:

sudo apt install lshw-gtk

Instalar lshw-gtk en su distribución de Linux basada en RedHat / Yum (como RHEL, Centos y Fedora), ejecute el siguiente comando en su terminal:

sudo yum install lshw-gtk

Si terminas instalando lshw-gtk, tenga en cuenta que hay algunas peculiaridades con esta herramienta que pueden no haber sido previstas. Para empezar, se recomienda utilizar sudo lshw-gtk en el indicador de la terminal para comenzar lshw-gtk de lo contrario, es posible que no toda la información del hardware esté disponible.

Más tarde, cuando haya lanzado la herramienta, querrá presionar el botón Recargar botón cerca de la parte superior como lshw-gtk no busca hardware de forma predeterminada, solo bajo demanda.

Finalmente, cuando el hardware se escanea unos segundos más tarde, la salida parece faltar excepto por una sola. Computadora de escritorio en la columna de la izquierda. Haga doble clic en esto, luego haga doble clic, por ejemplo tarjeta madre en la segunda columna y así sucesivamente. En mi experiencia, he descubierto que esta herramienta GUI en particular es, aunque funciona, algo limitada.

Diálogo principal de lshw-gtk después de escanear

¿Conoce la diferencia entre un bloqueo y un error y una afirmación? Nuestro artículo Reclamaciones, errores y bloqueos explica la diferencia.

Explorador lshw a la terminal de Linux

Cuando corres lshw en su terminal Linux (que generalmente se puede iniciar presionando el botón Windows Key + T en el teclado o presionando el ícono principal del sistema operativo (como el círculo verde en Linux Mint) y escribiendo Terminal) verá una salida de hardware larga y detallada. lshw hizo lo que se le ordenó hacer; enumere todo el hardware.

Hagamos que esto funcione un poco mejor limitando la producción a lo que nos interesa. Primero deberíamos explorar las clases de salida de hardware disponibles para nosotros.

Podemos hacerlo con lshw -short, que al mismo tiempo hará una descripción general más breve y más legible de nuestro hardware. Sin embargo, la lista de salida puede tener entre 1 y 2 páginas, según la configuración del terminal.

También en este punto debemos recordar usar siempre lshw con sudo. Esto asegurará que la salida no sea incompleta o inexacta. Corriendo lshw igual que sudo debe estar seguro (¡últimas palabras famosas!) como lshw se incluye de forma predeterminada en los archivos de distribución del núcleo del sistema operativo Linux; es de esperar que haya sido evaluado a fondo.

sudo lshw -short | head -n6

lshw salida de formato corto (usando la opción -short) que también muestra las clases de dispositivos, las primeras 6 líneas de salida

Aquí hemos solicitado una breve lista de todo el hardware utilizado lshw -short, ejecutar como superusuario root usando sudo, y limitado a las primeras seis líneas de salida usando head -n6. Nosotros transportada la salida de lshw para head usando una tubería de Linux | que es un método muy útil de post-análisis de información generada por una herramienta en casi cualquier otro formato requerido.

Al ejecutar esto en VirtualBox, inmediatamente vemos información interesante: lshw es consciente de que el sistema y el bus están VirtualBox basado. También vemos que se han asignado 8GiB de memoria a esta VM (Máquina Virtual).

Además, podemos ver la clase de los dispositivos listados, que es lo que usaremos en el siguiente. lshw ejemplo. Los nombres de clase de dispositivo utilizados en el lshw son simples y fáciles de recordar; hay system, bus, memory, bridge, generic, multimedia, disk, input, volume, display, network, processor y potencialmente algunos otros.

Usando una clase de dispositivo para realizar consultas lshw

Ahora que conocemos los nombres de clase del dispositivo, usemos los mismos en combinación con el -class opción (que se puede abreviar como -C) para consultar solo los dispositivos específicos que nos interesan. Por ejemplo, ¿qué pasaría si tuviéramos una manera fácil de detectar si el sistema que estábamos usando es una máquina virtualizada que se ejecuta específicamente en 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 'We are using VirtualBox!'; else echo 'This is not a VirtualBox VM!'; fi

Usando lshw para establecer y verificar si estamos corriendo dentro de VirtualBox

Aquí ejecutamos varios comandos, construyendo el comando en mayor complejidad cada vez. En el primer comando simplemente consultamos lshw como antes, pero esta vez con el extra -C system opción para enumerar solo los dispositivos de system clase.

Después de un escaneo corto (no se muestra en la captura de pantalla, ya que la salida desaparece una vez que se completa el escaneo), se muestran los dispositivos de la clase de sistema, que en este caso es el sistema VirtualBox.

En el siguiente comando, grep (seleccionar) solo para (gracias a -o opción) la palabra 'VirtualBox'. Si la salida no contiene 'VirtualBox', el comando no producirá ninguna salida.

También agregamos y stderr (salida de error estándar) redirigir a /dev/null utilizando 2>/dev/null por el extraño caso en el que sudo lshw cometería un error. Esta es una técnica de scripting comúnmente utilizada cuando se envía información de un comando a otro, aunque quizás haya pocas posibilidades de error (pero no imposible).

En el comando final, colocamos este código en una subcapa ($(...)) y luego en un if declaración. Básicamente, estamos pidiendo Bash intérprete para comprobar si la salida del segundo comando coincide con 'VirtualBox'.

Si es así, podemos decir con confianza ¡Estamos usando VirtualBox!. Si ejecuta este código en su máquina, asumiendo que está usando Bash, como intérprete de línea de comandos / shell y que no está utilizando VirtualBox, la salida debe ser ¡Esta no es una VM VirtualBox! En lugar de.

Terminando

En este artículo, hemos explorado lshw Y lshw-gtk, Herramientas de Linux para obtener información detallada del sistema y del hardware desde la línea de comandos y desde una GUI en el escritorio. Después de explorar lshw clases de dispositivos, también analizamos directamente el uso lshw información para determinar si estamos corriendo dentro de VirtualBox o no.

Si disfrutó de la lectura de este artículo, es posible que desee leer Cómo usar strace para rastrear las llamadas y señales del sistema después.

¿Qué te ha parecido?
Subir