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 Found
CLI에서 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(대부분 일정함)입니다.