GNU/Linux >> Tutoriales Linux >  >> Linux

Linux recupera los nombres de los monitores

Probado en Ubuntu 16.04, 18.04. (Sé que es demasiado tarde para responder, pero esta solución es relevante hoy)

$ sudo apt-get install -y hwinfo
...
$ hwinfo --monitor --short
monitor:
                   SONY TV
                   AUO LCD Monitor

Tengo dos monitores conectados. Uno con la computadora portátil y el otro es una pantalla externa. Tan pronto como se conecta o desconecta el monitor externo, este comando refleja el cambio. Necesitas sondear continuamente. Eliminando el --short opción da información más detallada.

Puede sondear el estado con el siguiente trabajo en segundo plano:

$ while true;
>  do
>   hwinfo --monitor --short;
>   sleep 2;
>  done >> monitor.log &

El while true el bucle se ejecuta infinitas veces. El sleep 2 pausa cada iteración del bucle durante 2 segundos. Y la salida de hwinfo --monitor --short se adjunta a monitor.log . Este archivo de registro puede brindarle el historial de actividad del complemento y desconexión del monitor.

FYI:estoy usando un script de python de fondo (daemon) usando el comando anterior (y otros similares) para detectar si alguien está haciendo algunos complementos y complementos de HW con los sistemas en el laboratorio de computación. Si es así, recibo notificaciones apropiadas de que alguien desconectó/encendió un monitor, mouse o teclado casi en tiempo real.

Más información sobre hwinfo El comando está aquí. Su página man también es una buena fuente.


sudo get-edid no funcionó para mí (EDITAR:ahora funciona en otra computadora, Lubuntu 14.10; culparía a las diferencias de BIOS, pero eso es una suposición al azar...)

De todos modos bajo X, xrandr --verbose imprime el bloque EDID. Aquí hay una forma rápida y sucia de extraerlo y pasarlo a parse-edid :

#!/bin/bash
xrandr --verbose | perl -ne '
if ((/EDID(_DATA)?:/.../:/) && !/:/) {
  s/^\s+//;
  chomp;
  $hex .= $_;
} elsif ($hex) {
  # Use "|strings" if you dont have read-edid package installed 
  # and just want to see (or grep) the human-readable parts.
  open FH, "|parse-edid"; 
  print FH pack("H*", $hex); 
  $hex = "";
}'

Inspirado en la respuesta de Beni, leerá los datos EDID usando xrandr y extraiga los nombres de los monitores de acuerdo con la especificación EDID, sin necesidad de herramientas externas como parse-edid :

#!/bin/bash
while read -r output hex conn; do
    [[ -z "$conn" ]] && conn=${output%%-*}
    echo "# $output $conn   $(xxd -r -p <<< "$hex")"
done < <(xrandr --prop | awk '
    !/^[ \t]/ {
        if (output && hex) print output, hex, conn
        output=$1
        hex=""
    }
    /ConnectorType:/ {conn=$2}
    /[:.]/ && h {
        sub(/.*000000fc00/, "", hex)
        hex = substr(hex, 0, 26) "0a"
        sub(/0a.*/, "", hex)
        h=0
    }
    h {sub(/[ \t]+/, ""); hex = hex $0}
    /EDID.*:/ {h=1}
    END {if (output && hex) print output, hex, conn}
    ' | sort
)

Usa awk para extraer con precisión el nombre del monitor solo , y sin basura adicional del EDID, por lo tanto, "números mágicos" como 000000fc00 , 26 y 0a . Finalmente usa xxd para convertir de hexadecimal a ASCII, imprimiendo un nombre de monitor por línea.

Basado en esta solución, hice una secuencia de comandos útil para cambiar de monitor, que también se puede usar para enumerar simplemente la información del monitor:

$ monitor-switch --list
Connected monitors:
# DFP5  HDMI    HT-R391
# DFP7  DVI-I   DELL U2412M

$ monitor-switch --list
Connected monitors:
# DisplayPort-1 DisplayPort DELL U2412M
# DisplayPort-3 DisplayPort DELL U2415
# HDMI-A-2      HDMI        LG TV

Linux
  1. Supervise su sistema Linux en su terminal con procps-ng

  2. Cómo monitorear la actividad del usuario en Linux

  3. Usa sar para monitorear recursos en Linux

  4. Cambiar el monitor predeterminado de la consola de Linux

  5. Process Monitor equivalente para Linux?

Cómo monitorear el tiempo de actividad del sistema Linux usando Uptimed

Cómo monitorear rápidamente múltiples hosts en Linux

Htop:un monitor de sistema Linux/visor de procesos interactivo

Cómo monitorear una máquina Linux a través de Nagios

Supervisar la tarea de Linux con SysMonTask

10 ejemplos del comando ss de Linux para monitorear conexiones de red