Ssh
如何以程式方式控制 X11 轉發的應用程序?
我想設置 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 視窗。
您可以從 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
獲取幫助)。