CLI(헤드리스 GUI)에서 GUI와 상호 작용

CLI(헤드리스 GUI)에서 GUI와 상호 작용

Linux 서버가 있습니다.

내 서버에 CLI를 통해 제어할 수 있는 헤드리스 GUI가 있기를 원합니다.

XRDP를 사용하여 GUI를 표시하는 것이 가능하다는 것을 알고 있습니다. 하지만 SSH나 CLI를 통해 제어할 수 있었으면 좋겠습니다. XRDP를 사용하면 잘 작동합니다.

OpenBox(창 관리자)를 설치했습니다. GUI와 CLI를 상호 작용할 수 있기를 바라고 있습니다. 아니면 이를 처리할 수 있는 Python 라이브러리가 있을 수도 있습니다.

mouseclick(2,3) # mouse click area at coordinate (2,3)

screenshot("./current_screen.png") # saving screenshot of current screen in specified path.

라이브러리가 처리할 수 있는 또 다른 기능입니다.

비슷한 라이브러리를 찾았는데 pyautogui.

그러나 pyautogui기존 GUI가 있으면 작동합니다. Display Not FoundCLI에서 Python 스크립트를 실행하면 오류가 발생합니다 .

# t.py
import pyautogui
print(pyautogui.size())

오류가 발생합니다.

root@server-kentang:~/py# python3 t.py
Traceback (most recent call last):                           File "/usr/local/lib/python3.8/dist-packages/Xlib/support/unix_connect.py", line 76, in get_socket
    s.connect('/tmp/.X11-unix/X%d' % dno)                  FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):                           File "t.py", line 1, in <module>
    import pyautogui
  File "/usr/local/lib/python3.8/dist-packages/pyautogui/__init__.py", line 249, in <module>
    import mouseinfo
  File "/usr/local/lib/python3.8/dist-packages/mouseinfo/__init__.py", line 223, in <module>
    _display = Display(os.environ['DISPLAY'])
  File "/usr/local/lib/python3.8/dist-packages/Xlib/display.py", line 80, in __init__
    self.display = _BaseDisplay(display)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/display.py", line 62, in __init__
    display.Display.__init__(*(self, ) + args, **keys)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/protocol/display.py", line 58, in __init__
    self.socket = connect.get_socket(name, host, displayno)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/support/connect.py", line 76, in get_socket
    return mod.get_socket(dname, host, dno)
  File "/usr/local/lib/python3.8/dist-packages/Xlib/support/unix_connect.py", line 78, in get_socket
    raise error.DisplayConnectionError(dname, str(val))
Xlib.error.DisplayConnectionError: Can't connect to display ":0": [Errno 2] No such file or directory

답변1

환경변수인거 같네요전시하다여기의 설정이 올바르지 않습니다.

다음과 같이 설정해야 합니다.
export DISPLAY=:0.0
또는 더 일반적으로는
export DISPLAY=$HOSTNAME:$N.$W
다음과 같이 설정해야 합니다.$호스트 이름 & $N & $W기존 조건과 일치해야 합니다.

OP의 경우 HOSTNAME은 비어 있고(로컬 호스트를 의미) N은 10(X 서버의 각 실행 인스턴스에서 시간에 따라 달라질 수 있음), W는 작동 구성을 얻기 위한 0(대부분 일정함)입니다.

관련 정보