Ssh

如何以程式方式控制 X11 轉發的應用程序?

  • January 11, 2022

我想設置 X11 轉發以在伺服器上執行遠端 X 應用程序,並且 X11 客戶端可以處理 UX 互動。

但是,我想配置 X11 客戶端或偽造它以程式方式(來自腳本)實際進行使用者互動。

例如,我想執行一個需要一些滑鼠點擊或鍵盤互動(例如安裝程序)的應用程序,因此我可以通過腳本以程式方式將這些點擊或鍵盤按鍵信號發送到應用程序,直到它完成。

有可能嗎?如何實現或從哪裡開始?或者我如何重用/劫持 X11 協議來注入我自己的非使用者互動?

到目前為止,我已經找到xdotool了可以很容易地偽造滑鼠和鍵盤輸入的工具。

一些簡單的鍵盤互動範例:

xdotool key a
xdotool key Down
xdotool key Tab
xdotool key "Return"
xdotool key "Control_L+t"
xdotool key Alt+1
xdotool key ctrl+v
xdotool key Super
xdotool key KP_Enter
xdotool key ctrl+Page_Up
xdotool key ctrl+U005C
xdotool key ctrl+shift+e
xdotool key --delay 1000  shift+minus # for underscore
xdotool key --clearmodifiers shift+Insert
xdotool key --clearmodifiers --window 0x2600006 alt+1 0 9 8 7 6 5 4 3

帶有滑鼠互動的範例腳本:

WINDOWID=$(xdotool selectwindow)

xdotool set_window --overrideredirect 1 $WINDOWID windowunmap $WINDOWID windowmap $WINDOWID
xdotool windowsize $WINDOWID 10 100%

# Set behaviors
xdotool behave $WINDOWID mouse-enter windowfocus windowsize --usehints 80 100% &
xdotool behave $WINDOWID mouse-leave windowsize 4 100% &

另一個例子:如何將 F5 擊鍵發送到第一個 Chrome 視窗

更多腳本範例請在GitHub官方頁面上找到。

您可以從 apt 儲存庫安裝它,例如:或從原始碼sudo apt-get install xdotool編譯。


葡萄酒

如果 X11 應用程序在 Wine 下執行,您也可以使用Winetricks。檢查源文件(它是一個 shell 腳本)以獲取如何使用 AutoHotkey 工具控制應用程序的指導。

更高級的方法可以包括使用winedbg調試器並附加到程序:

$ winedbg
Wine-dbg>info process
00000008 3        'terminal.exe'
Wine-dbg>attach 8
0xf7709c0e __kernel_vsyscall+0xe in [vdso].so: int  $0x80

然後您可以使用調試器直接進行互動(請參閱:man winedbg獲取幫助)。

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