Ssh
通過本地 ssh 連接檢測機器上的監視器
我需要編寫一個腳本來檢查本地網路中機器上的影片相關內容,例如
- 是否插入了顯示器?
- 影片驅動程序是最新的並且適合硬體嗎?
- Xorg 正在執行嗎?
但是,我很難找到一種可靠的方法來判斷監視器是否通過本地 ssh 連接插入。例如,如果我從機器 A SSH 到同一子網中的另一台機器 B,則該
xrandr
工具返回有關插入機器 A 而不是機器 B 的監視器的資訊。我嘗試了許多其他工具,但都給出了相同的效果. 如何確定我正在探測插入到我所連接的機器的監視器,而不是我正在執行 shell 會話的機器?
禁用 X11 轉發(使用
-x
switch 到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 中沒有任何內容