GNU/Linux >> Linux Esercitazione >  >> Linux

Linux recupera i nomi dei monitor

Testato su Ubuntu 16.04, 18.04. (So ​​che è troppo tardi per rispondere, ma questa soluzione è rilevante oggi)

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

Ho due monitor collegati. Uno con il laptop e l'altro è un display esterno. Non appena il monitor esterno viene collegato o scollegato, questo comando riflette la modifica. Hai continuamente bisogno di sondaggi. Rimozione del --short opzione fornisce informazioni più dettagliate.

Puoi eseguire il polling dello stato con il seguente lavoro in background:

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

Il while true il ciclo viene eseguito infinite volte. Il sleep 2 mette in pausa ogni iterazione del ciclo per 2 secondi. E l'output di hwinfo --monitor --short viene aggiunto a monitor.log . Questo file di registro può fornirti la cronologia delle attività dei plug-in e plug-out del monitor.

Cordiali saluti:sto usando uno script python in background (daemon) usando il comando sopra (e altri simili) per rilevare se qualcuno sta facendo alcuni plug-in e plug-out HW con i sistemi nel laboratorio informatico. In tal caso, ricevo notifiche appropriate che qualcuno ha collegato/collegato un monitor, un mouse o una tastiera quasi in tempo reale!

Ulteriori informazioni su hwinfo il comando è qui. Anche la sua pagina man è una buona fonte.


sudo get-edid non ha funzionato per me. (EDIT:ora funziona su un altro computer, Lubuntu 14.10; darei la colpa alle differenze del BIOS ma è un'ipotesi casuale...)

Comunque sotto X, xrandr --verbose stampa il blocco EDID. Ecco un modo rapido e sporco per estrarlo e passare 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 = "";
}'

Ispirato dalla risposta di Beni, questo leggerà i dati EDID usando xrandr ed estrarre i nomi dei monitor secondo la specifica EDID, senza bisogno di strumenti esterni come 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
)

Utilizza awk per estrarre con precisione solo il nome del monitor , e nessuna spazzatura extra dall'EDID, quindi "numeri magici" come 000000fc00 , 26 e 0a . Infine usa xxd per convertire da esadecimale ad ASCII, stampando un nome di monitor per riga.

Sulla base di questa soluzione ho creato un pratico script per cambiare monitor, che può essere utilizzato anche per elencare semplicemente le informazioni sul 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. Monitora il tuo sistema Linux nel tuo terminale con procps-ng

  2. Come monitorare l'attività dell'utente in Linux

  3. Usa sar per monitorare le risorse in Linux

  4. Linux:instradamento basato sui nomi di dominio

  5. Equivalente di Process Monitor per Linux?

Come monitorare l'uptime del sistema Linux utilizzando Uptimed

Come monitorare rapidamente più host in Linux

Htop – Un monitor/visualizzatore di processi interattivo di sistema Linux

Come monitorare la macchina Linux tramite Nagios

Monitora attività Linux con SysMonTask

10 esempi di comando Linux ss per monitorare le connessioni di rete