web-dev-qa-db-fra.com

Comment obtenir les noms des différentes sorties disponibles sur le système via ssh?

Si j'exécute xrandr à partir d'un terminal dans la session X, je peux voir les noms des différentes sorties disponibles sur le système. Par exemple, je reçois quelque chose comme ceci:

Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected (normal left inverted right x axis y axis)
    1440x900       59.9*+
    1280x854       59.9  
    1280x800       59.8  

C'est génial, mais cela ne fonctionne que si je suis sur la session X, soit physiquement devant l'ordinateur ou via Remote Desktop (VNC). Comment puis-je obtenir ces mêmes noms à distance via SSH à la place? Je n'utiliserais probablement pas xrandr pour cela, mais alors que dois-je utiliser?

Avec l'exemple ci-dessus, ce que j'aimerais obtenir de SSH, ce sont les valeurs "VGA" et "LVDS".

2
user195574

Si vous vous connectez via ssh, vous pourriez très bien ne pas avoir de session X en cours d'exécution. Même si vous l'avez, la session ssh n'est connectée à aucun d'entre eux par défaut ... vous pouvez même vous connecter via ssh à un utilisateur différent de celui qui a ouvert la session X.

Ainsi, par exemple, si je passe à ma machine distante, j'ai:

(0)pern:~% xrandr --current
Can't open display 

Je dois donc trouver si une session X est en cours d'exécution et qui est connecté:

(0)pern:~% w
 01:57:06 up 10 days,  9:56,  4 users,  load average: 0.12, 0.17, 0.13
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
romano   tty7     :0               08Nov13 10days  1:29m  6.95s gnome-session -
romano   pts/2    :0               08Nov13 10days 23.67s 23.67s /home/romano/bi
romano   pts/0    xxx.xx.xxx.xxx   01:56    2.00s  0.08s  0.00s w
romano   pts/3    :0               08Nov13  6:48m  0.08s  0.08s zsh

Hmmm ... voyons la capacité d'affichage: 0, étant donné que je suis connecté en tant que même utilisateur et que j'ai donc les autorisations:

(1)pern:~% xrandr --current -display  :0
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 8192 x 8192
DIN disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 430mm x 270mm
   1680x1050      59.9*+
   1600x1200      60.0  
   1280x1024      75.0     60.0  
   1024x768       75.1     72.0     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        72.8     75.0     66.7     60.0  
   720x400        70.1  

Notez que tout cela fonctionnera si l'utilisateur de la session non graphique dispose de droits suffisants sur le serveur. Fondamentalement, il doit s'agir du même utilisateur qui a démarré le serveur X (et parfois, faites pour .Xauthority, pas même dans ce cas); pour le faire fonctionner à tout moment, vous devez faire xhost + sur le serveur (mais cela a gros risques de sécurité).

1
Rmano

J'ai déjà expliqué comment pour lister les affichages dans une vie antérieure, cela devrait vous permettre d'itérer chaque affichage X et d'afficher les sorties disponibles

w -hs | awk '{print $3}' | sort -u | xargs -I% xrandr -display %

Je ne sais pas si vous avez besoin de boucler les affichages, mais cela devrait néanmoins fonctionner.

1
Oli