GNU/Linux >> Tutoriels Linux >  >> Linux

Linux récupère les noms des moniteurs

Testé sur Ubuntu 16.04, 18.04. (Je sais qu'il est trop tard pour répondre mais cette solution est pertinente aujourd'hui)

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

J'ai deux moniteurs attachés. L'un avec l'ordinateur portable et l'autre est un écran externe. Dès que le moniteur externe est branché ou débranché, cette commande reflète le changement. Vous devez continuellement interroger. Suppression du --short option donne des informations plus détaillées.

Vous pouvez interroger l'état avec la tâche d'arrière-plan suivante :

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

Le while true boucle s'exécute une infinité de fois. Le sleep 2 met en pause chaque itération de la boucle pendant 2 secondes. Et la sortie de hwinfo --monitor --short est ajouté à monitor.log . Ce fichier journal peut vous donner l'historique des activités du plug-in et du plug-out du moniteur.

FYI:J'utilise un script python d'arrière-plan (démon) utilisant la commande ci-dessus (et d'autres similaires) pour détecter si quelqu'un fait des plug-ins et des plug-outs HW avec les systèmes du laboratoire informatique. Si c'est le cas, je reçois des notifications appropriées indiquant que quelqu'un a débranché/rebranché un moniteur, une souris ou un clavier presque en temps réel !

Plus d'informations sur hwinfo la commande est ici. Sa page de manuel est également une bonne source.


sudo get-edid n'a pas fonctionné pour moi. (EDIT :fonctionne maintenant sur un autre ordinateur, Lubuntu 14.10 ; je blâmerais les différences de BIOS, mais c'est une supposition aléatoire...)

Quoi qu'il en soit sous X, xrandr --verbose imprime le bloc EDID. Voici un moyen rapide et sale de l'extraire et de passer à 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 = "";
}'

Inspiré de la réponse de Beni, cela lira les données EDID en utilisant xrandr et extraire les noms des moniteurs selon la spécification EDID, sans avoir besoin d'outils externes comme 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
)

Utilise awk pour extraire précisément le nom du moniteur uniquement , et pas de déchets supplémentaires de l'EDID, d'où des "nombres magiques" comme 000000fc00 , 26 et 0a . Utilise enfin xxd pour convertir de l'hexadécimal en ASCII, en imprimant un nom de moniteur par ligne.

Sur la base de cette solution, j'ai créé un script pratique pour changer de moniteur, qui peut également être utilisé pour répertorier simplement les informations du moniteur :

$ 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. Surveillez votre système Linux dans votre terminal avec procps-ng

  2. Comment surveiller l'activité des utilisateurs sous Linux

  3. Utiliser sar pour surveiller les ressources sous Linux

  4. Changer le moniteur par défaut de la console Linux

  5. Linux :routage basé sur les noms de domaine

Comment surveiller la disponibilité du système Linux à l'aide d'Uptimed

Comment surveiller rapidement plusieurs hôtes sous Linux

Htop - Un moniteur de système Linux interactif / visualiseur de processus

Comment surveiller une machine Linux via Nagios

Surveiller la tâche Linux avec SysMonTask

10 exemples de commande Linux ss pour surveiller les connexions réseau