pyscreenshot получить скриншот удаленного windows сервера без входа в систему - PullRequest
0 голосов
/ 08 апреля 2020

Сценарий python2 был выполнен процессом системного демона (таким как SaltStack, пользователь процесса - Администратор), сценарий работал хорошо и сохранил снимок экрана, пока я был подключен, и войдите на сервер, но это вызовет ошибку без кого-либо был авторизован.

import pyscreenshot
getPic = pyscreenshot.grab(bbox=(0, 0, 1920, 1080)) ## line 43
# getPic = pyscreenshot.grab() ## work as same as before line
getPic.save('screenshot.png')

Информация об ошибке:

Traceback (most recent call last):
  File ".../.../get_desktop_screenshot.py", line 43, in <module>
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 43, in grab
    return _grab(childprocess=childprocess, backend=backend, bbox=bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 29, in _grab
    return childprocess_grab(_grab_simple, backend, bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\childproc.py", line 34, in childprocess_grab
    return childprocess_grab_popen(backend, bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\childproc.py", line 54, in childprocess_grab_popen
    raise FailedBackendError(p)
pyscreenshot.loader.FailedBackendError: <EasyProcess cmd_param=['C:\\Python27\\python.exe', '-m', 'pyscreenshot.cli.grab_to_file', 'c:\\users\\admini~1\\appdata\\local\\temp\\pyscreenshothgubzc\\screenshot.png', '0', '0', '1920', '1080', '--backend', ''] cmd=['C:\\Python27\\python.exe', '-m', 'pyscreenshot.cli.grab_to_file', 'c:\\users\\admini~1\\appdata\\local\\temp\\pyscreenshothgubzc\\screenshot.png', '0', '0', '1920', '1080', '--backend', ''] oserror=None return_code=1 stdout="" stderr="Traceback (most recent call last):

  File "C:\Python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\lib\site-packages\pyscreenshot\cli\grab_to_file.py", line 8, in <module>
    def main(filename, x1, y1, x2, y2, backend=""):
  File "C:\Python27\lib\site-packages\entrypoint2\__init__.py", line 440, in entrypoint
    return func(**kwargs)
  File "C:\Python27\lib\site-packages\pyscreenshot\cli\grab_to_file.py", line 28, in main
    im = pyscreenshot.grab(bbox=bbox, childprocess=False, backend=backend)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 43, in grab
    return _grab(childprocess=childprocess, backend=backend, bbox=bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 31, in _grab
    return _grab_simple(backend, bbox, filename)
  File "C:\Python27\lib\site-packages\pyscreenshot\__init__.py", line 17, in _grab_simple
    return backend_obj.grab(bbox)
  File "C:\Python27\lib\site-packages\pyscreenshot\plugins\pil.py", line 17, in grab
    return self.ImageGrab.grab(bbox)
  File "C:\Python27\lib\site-packages\PIL\ImageGrab.py", line 41, in grab
    size, data = grabber()
IOError: screen grab failed" timeout_happened=False>

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

учиться у: " Снимок экрана PowerShell "

"Короче говоря, это позволяет создавать правильные снимки экрана только при запуске из-под зарегистрированного пользователя. Запланированные задачи соответствуют требованиям, если пользователи совпадают. Запуск системный или локальный администратор не позволит вам получать скриншоты. "

Возможно, в этой ситуации нет смысла.

0 голосов
/ 08 апреля 2020

Может быть, кто-то скажет, что ему нужно событие мыши или клавиатуры, но у меня это не работает, процесс будет oop использован, если кто-то подключится и войдет в систему на удаленной машине.

, например:

while True:
    win32api.keybd_event(win32con.VK_SNAPSHOT, 0, 0, 0)
    time.sleep(1)
    win32api.keybd_event(win32con.VK_SNAPSHOT, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(5)
    filename = 'a.png'
    im = ImageGrab.grabclipboard()
    if im is None:
        print('===>is None ')
    else:
        print('===>' + str(im.size))
        break

из "https://ask.csdn.net/questions/203262#answer_form"

или

def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

из " Управление мышью с помощью Python «

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...