Ssh

通過本地 ssh 連接檢測機器上的監視器

  • April 21, 2013

我需要編寫一個腳本來檢查本地網路中機器上的影片相關內容,例如

  • 是否插入了顯示器?
  • 影片驅動程序是最新的並且適合硬體嗎?
  • Xorg 正在執行嗎?

但是,我很難找到一種可靠的方法來判斷監視器是否通過本地 ssh 連接插入。例如,如果我從機器 A SSH 到同一子網中的另一台機器 B,則該xrandr工具返回有關插入機器 A 而不是機器 B 的監視器的資訊。我嘗試了許多其他工具,但都給出了相同的效果. 如何確定我正在探測插入到我所連接的機器的監視器,而不是我正在執行 shell 會話的機器?

禁用 X11 轉發(使用-xswitch 到ssh)並為機器 B 設置 DISPLAY 環境變數。例如,這將告訴您機器 B 上 :0 的設置:

ssh -x machineB
DISPLAY=:0 xrandr

一個名為“get-edid”的工具可以讓你從顯示器read-edid網站讀取辨識資訊 擴展顯示辨識數據

和“parse-edid”從 get-edid 創建,正確的 X 配置監視器部分:

我的機器上的例子:

# get-edid | parse-edid 
parse-edid: parse-edid version 2.0.0
get-edid: get-edid version 2.0.0

Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful

VBE version 300
VBE string at 0xc01f0 "ATI ATOMBIOS"

VBE/DDC service about to be called
Report DDC capabilities

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful

Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination supports DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer

Reading next EDID block

VBE/DDC service about to be called
Read EDID

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call successful

parse-edid: EDID checksum passed.

# EDID version 1 revision 3
Section "Monitor"
# Block type: 2:0 3:fd
# Block type: 2:0 3:fc
Identifier "Acer H233H"
VendorName "ACR"
ModelName "Acer H233H"
# Block type: 2:0 3:fd
HorizSync 30-83
VertRefresh 56-75
# Max dot clock (video bandwidth) 170 MHz
# Block type: 2:0 3:fc
# Block type: 2:0 3:ff
# DPMS capabilities: Active off:yes  Suspend:no  Standby:no

Mode    "1920x1080" # vfreq 60.000Hz, hfreq 67.500kHz
   DotClock    148.500000
   HTimings    1920 2008 2052 2200
   VTimings    1080 1084 1089 1125
   Flags   "+HSync" "+VSync"
EndMode
# Block type: 2:0 3:fd
# Block type: 2:0 3:fc
# Block type: 2:0 3:ff
EndSection

您必須是 root 才能使用它們。/etc/X11/xorg.conf 中沒有任何內容

引用自:https://unix.stackexchange.com/questions/68458