Перевод в процессе

dev-linux
Ivan Maslov 2 years ago
parent 78770f20c0
commit ba49f6682d

@ -25,16 +25,19 @@ pyOpenRPA - роботы Вам помогут!
************************************************** **************************************************
Автор Автор
************************************************** **************************************************
Маслов Иван Дмитриевич Маслов Иван Дмитриевич (с 2019г.)
************************************************** **************************************************
Правообладатель Правообладатель
************************************************** **************************************************
**с 2022г.**
ООО "ОПЕН РПА", ОГРН 1227700251350, ИНН/КПП 9718191421/771801001 ООО "ОПЕН РПА", ОГРН 1227700251350, ИНН/КПП 9718191421/771801001
г. Москва: 125310, улица Муравская г. Москва: 125310, улица Муравская
г. Санкт-Петербург: 197022, улица Льва Толстого г. Санкт-Петербург: 197022, улица Льва Толстого
**с 2019г. по 2021г.**
Маслов Иван Дмитриевич (с 2019г.)
************************************************** **************************************************
Центр поддержки клиентов Центр поддержки клиентов
************************************************** **************************************************
@ -48,7 +51,7 @@ pyOpenRPA - роботы Вам помогут!
- Телеграм канал: @pyOpenRPA :: `Присоединиться <https://t.me/pyOpenRPA>`_ - Телеграм канал: @pyOpenRPA :: `Присоединиться <https://t.me/pyOpenRPA>`_
************************************************** **************************************************
Иван Маслов (Генеральный директор ООО "ОПЕН РПА") Иван Маслов (генеральный директор ООО "ОПЕН РПА")
************************************************** **************************************************
- Телефон/WhatsApp: +7 (906) 722-39-25 - Телефон/WhatsApp: +7 (906) 722-39-25
@ -62,18 +65,19 @@ pyOpenRPA - роботы Вам помогут!
Используемые сторонние компоненты (лицензионная чистота) Используемые сторонние компоненты (лицензионная чистота)
********************************************************** **********************************************************
- WinPython, v3.7.1 32-bit & 64-bit, лицензия MIT (https://github.com/winpython/winpython) - WinPython, v3.7.1 32-bit & 64-bit, лицензия MIT https://github.com/winpython/winpython
- Selenium, v3.141.0, лицензия Apache 2.0 (https://github.com/SeleniumHQ/selenium/blob/trunk/LICENSE) - Selenium, v3.141.0, лицензия Apache 2.0 https://github.com/SeleniumHQ/selenium/blob/trunk/LICENSE
- pywinauto, v0.6.5, лицензия BSD 3-Clause (https://github.com/pywinauto/pywinauto) - pywinauto, v0.6.5, лицензия BSD 3-Clause https://github.com/pywinauto/pywinauto
- Semantic UI, v2.4.1, лицензия MIT (https://github.com/Semantic-Org/Semantic-UI) - Semantic UI, v2.4.1, лицензия MIT https://github.com/Semantic-Org/Semantic-UI
- PyAutoGUI, v0.9.44, лицензия BSD 3-Clause (https://github.com/asweigart/pyautogui) - PyAutoGUI, v0.9.44, лицензия BSD 3-Clause https://github.com/asweigart/pyautogui
- keyboard, v0.13.3, лицензия MIT (https://github.com/boppreh/keyboard) - keyboard, v0.13.3, лицензия MIT https://github.com/boppreh/keyboard)
- pywin32 (win32api), v228, Python Software Foundation лицензия (PSF) (https://github.com/mhammond/pywin32) - pywin32 (win32api), v228, Python Software Foundation лицензия (PSF) https://github.com/mhammond/pywin32
- WMI, v1.4.9, лицензия MIT, (http://www.opensource.org/licenses/mit-license.php) - WMI, v1.4.9, лицензия MIT, http://www.opensource.org/licenses/mit-license.php
- psutil, v5.6.2, лицензия BSD 3-Clause (https://github.com/giampaolo/psutil/blob/master/LICENSE) - psutil, v5.6.2, лицензия BSD 3-Clause https://github.com/giampaolo/psutil/blob/master/LICENSE
- Pillow PIL, v6.0.0, лицензия HPND (https://github.com/python-pillow/Pillow/blob/main/LICENSE) - Pillow PIL, v6.0.0, лицензия HPND https://github.com/python-pillow/Pillow/blob/main/LICENSE
- requests, v2.22.0, лицензия Apache 2.0 (https://github.com/psf/requests/blob/main/LICENSE) - requests, v2.22.0, лицензия Apache 2.0 https://github.com/psf/requests/blob/main/LICENSE
- JsRender, v1.0.2, лицензия MIT (https://github.com/BorisMoore/jsrender/blob/master/MIT-LICENSE.txt) - JsRender, v1.0.2, лицензия MIT https://github.com/BorisMoore/jsrender/blob/master/MIT-LICENSE.txt
- Handlebars, v4.1.2, лицензия MIT, (https://github.com/handlebars-lang/handlebars.js/blob/master/LICENSE) - Handlebars, v4.1.2, лицензия MIT, https://github.com/handlebars-lang/handlebars.js/blob/master/LICENSE
- jinja2, v2.11.2, лицензия BSD 3-Clause, (https://github.com/pallets/jinja/blob/main/LICENSE.rst) - jinja2, v2.11.2, лицензия BSD 3-Clause, https://github.com/pallets/jinja/blob/main/LICENSE.rst
- JupiterNotebook v6.1.4, лицензия BSD 3-Clause, https://github.com/jupyter/notebook/blob/main/LICENSE - JupiterNotebook v6.1.4, лицензия BSD 3-Clause, https://github.com/jupyter/notebook/blob/main/LICENSE
- schedule, v1.1.0, лицензия MIT, https://github.com/dbader/schedule/blob/master/LICENSE.txt

@ -6,6 +6,13 @@
При необходимости вы всегда можете обратиться в центр поддержки клиентов pyOpenRPA. Контакты: :ref:`3.-Copyrights-&-Contacts` При необходимости вы всегда можете обратиться в центр поддержки клиентов pyOpenRPA. Контакты: :ref:`3.-Copyrights-&-Contacts`
**************************************************
Что такое активность (ActivityItem)
**************************************************
Архитектура pyOpenRPA позволяет обмениваться сообщениями о выполнении функций через механизм активностей (ActivityItem).
На стороне Агента и Оркестратора реализована процессорная очередь, которая последовательно выполняет поставленные активности. Результат этих активностей сообщается инициатору (см. функции группы Agent... в Оркестраторе)
************************************************** **************************************************
pyOpenRPA.Orchestrator.__Orchestrator__ pyOpenRPA.Orchestrator.__Orchestrator__
************************************************** **************************************************

@ -50,6 +50,7 @@ pyOpenRPA - роботы помогут!
Лицензия pyOpenRPA разрешает бесплатное использование только для некоммерческих организаций и физических лиц (не ИП и не самозанятый). В остальных случаях требуется получение цифрового сертификата от правообладателя (ООО "ОПЕН РПА"). Лицензия pyOpenRPA разрешает бесплатное использование только для некоммерческих организаций и физических лиц (не ИП и не самозанятый). В остальных случаях требуется получение цифрового сертификата от правообладателя (ООО "ОПЕН РПА").
**Для коммерческого использования:** **Для коммерческого использования:**
* Вариант 1: Подписка на премиальную техническую поддержку от вендора (ежемесячно от 66 900 руб. без НДС) * Вариант 1: Подписка на премиальную техническую поддержку от вендора (ежемесячно от 66 900 руб. без НДС)
* Вариант 2: Покупка бессрочной лицензии на текущую версию pyOpenRPA и ниже (разовый платеж 299 000 руб. без НДС) * Вариант 2: Покупка бессрочной лицензии на текущую версию pyOpenRPA и ниже (разовый платеж 299 000 руб. без НДС)
* Вариант 3: Покупка бессрочной лицензии на 1-го робота, который будет использовать текущую версию pyOpenPRA и ниже (разовый платеж 99 000 руб. без НДС) * Вариант 3: Покупка бессрочной лицензии на 1-го робота, который будет использовать текущую версию pyOpenPRA и ниже (разовый платеж 99 000 руб. без НДС)

@ -96,7 +96,7 @@ def AgentActivityItemReturnExists(inGUIDStr, inGSettings = None):
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inGUIDStr: ГУИД (GUID) активности (ActivityItem) :param inGUIDStr: ГУИД (GUID) активности (ActivityItem)
:return: True - Активность присутствует ; False - Активность еще не была выполнена на стороне Агента :return: True - Активность присутствует; False - Активность еще не была выполнена на стороне Агента
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
@ -106,14 +106,15 @@ def AgentActivityItemReturnExists(inGUIDStr, inGSettings = None):
def AgentActivityItemReturnGet(inGUIDStr, inCheckIntervalSecFloat = 0.5, inGSettings=None): def AgentActivityItemReturnGet(inGUIDStr, inCheckIntervalSecFloat = 0.5, inGSettings=None):
""" """
Work synchroniously! Wait while result will be recieved. Get the result of the ActivityItem execution on the Agent side. Before this please check by the def AgentActivityItemReturnExists that result has come to the Orchestrator Ожидает появления результата по активности (ActivityItem). Возвращает результат выполнения активности.
!ATTENTION! Use only after Orchestrator initialization! Before orchestrator init exception will be raised. !ВНИМАНИЕ! Замораживает поток, пока не будет получен результат.
!ВНИМАНИЕ! Запускать следует после того как будет инициализировано ядро Оркестратора (см. функцию OrchestratorInitWait), иначе будет инициирована ошибка.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inGUIDStr: ГУИД (GUID) активности (ActivityItem) :param inGUIDStr: ГУИД (GUID) активности (ActivityItem)
:param inCheckIntervalSecFloat: Interval in sec of the check Activity Item result :param inCheckIntervalSecFloat: Интервал в секундах, с какой частотой выполнять проверку результата. По умолчанию 0.5
:return: Result of the ActivityItem executed on the Agent side anr transmitted to the Orchestrator. IMPORTANT! ONLY JSON ENABLED Types CAN BE TRANSMITTED TO ORCHESTRATOR! :return: Результат выполнения активности. !ВНИМАНИЕ! Возвращаются только то результаты, которые могут быть интерпретированы в JSON формате.
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
#Check if Orchestrator has been initialized - else raise exception #Check if Orchestrator has been initialized - else raise exception
@ -128,17 +129,17 @@ def AgentActivityItemReturnGet(inGUIDStr, inCheckIntervalSecFloat = 0.5, inGSett
def AgentOSCMD(inHostNameStr, inUserStr, inCMDStr, inRunAsyncBool=True, inSendOutputToOrchestratorLogsBool=True, inCMDEncodingStr="cp1251", inGSettings=None, inCaptureBool=True): def AgentOSCMD(inHostNameStr, inUserStr, inCMDStr, inRunAsyncBool=True, inSendOutputToOrchestratorLogsBool=True, inCMDEncodingStr="cp1251", inGSettings=None, inCaptureBool=True):
""" """
Send CMD to OS thought the pyOpenRPA.Agent daemon. Result return to log + Orchestrator by the A2O connection Отправка команды командной строки на сессию, где работает pyOpenRPA.Agent. Результат выполнения команды можно выводить в лог оркестратора.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inCMDStr: command to execute on the Agent session :param inCMDStr: Команда для исполнения на стороне сессии Агента
:param inRunAsyncBool: True - Agent processor don't wait execution; False - Agent processor wait cmd execution :param inRunAsyncBool: True - Агент не ожидает окончания выполнения команды. !ВНИМАНИЕ! Логирование в такой ситуации будет невозможно; False - Агент ожидает окончания выполнения операции.
:param inSendOutputToOrchestratorLogsBool: True - catch cmd execution output and send it to the Orchestrator logs; Flase - else case; Default True :param inSendOutputToOrchestratorLogsBool: True - отправлять весь вывод от команды в логи Оркестратора; Flase - Не отправлять; Default True
:param inCMDEncodingStr: Set the encoding of the DOS window on the Agent server session. Windows is beautiful :) . Default is "cp1251" early was "cp866" - need test :param inCMDEncodingStr: Кодировка DOS среды, в которой исполняется команда. Если некорректно установить кодировку - русские символы будут испорчены. По умолчанию установлена "cp1251"
:param inCaptureBool: !ATTENTION! If you need to start absolutely encapsulated app - set this flag as False. If you set True - the app output will come to Agent :param inCaptureBool: True - не запускать приложение как отдельное. Результат выполнения команды будет выводиться в окне Агента (если окно Агента присутствует на экране). False - команда будет запущена в отдельном DOS окне.
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = { lActivityItemDict = {
@ -153,9 +154,11 @@ def AgentOSCMD(inHostNameStr, inUserStr, inCMDStr, inRunAsyncBool=True, inSendOu
def AgentOSLogoff(inHostNameStr, inUserStr): def AgentOSLogoff(inHostNameStr, inUserStr):
""" """
Logoff the agent user session Выполнить операцию logoff на стороне пользователя.
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet() # Set the global settings inGSettings = GSettingsGet() # Set the global settings
lCMDStr = "shutdown /l" lCMDStr = "shutdown /l"
@ -171,16 +174,17 @@ def AgentOSLogoff(inHostNameStr, inUserStr):
def AgentOSFileSend(inHostNameStr, inUserStr, inOrchestratorFilePathStr, inAgentFilePathStr, inGSettings = None): def AgentOSFileSend(inHostNameStr, inUserStr, inOrchestratorFilePathStr, inAgentFilePathStr, inGSettings = None):
""" """
Send the file from the Orchestrator to Agent (synchroniously) pyOpenRPA.Agent daemon process (safe for JSON transmition). Отправить файл по адресу inOrchestratorFilePathStr со стороны Оркестратора и сохранить по адресу inAgentFilePathStr на стороне Агента.
Work safety with big files Поддерживает передачу крупных файлов (более 2-х Гб.). Функция является синхронной - не закончит свое выполнение, пока файл не будет передан полностью.
Thread safe - you can call def even if you dont init the orchestrator - def will be executed later
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) !ВНИМАНИЕ - ПОТОКОБЕЗОПАСНАЯ! Вы можете вызвать эту функцию до инициализации ядра Оркестратора. Оркестратор добавит эту функцию в процессорную очередь на исполение. Если вам нужен результат функции, то необходимо сначала убедиться в том, что ядро Оркестратора было инициализированно (см. функцию OrchestratorInitWait).
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: :param inOrchestratorFilePathStr: Полный путь к передаваемому файлу на стороне Оркестратора.
:param inFileDataBytes: :param inAgentFilePathStr: Полный путь к локации, в которую требуется сохранить передаваемый файл.
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
@ -237,14 +241,14 @@ def AgentOSFileSend(inHostNameStr, inUserStr, inOrchestratorFilePathStr, inAgent
def AgentOSFileBinaryDataBytesCreate(inHostNameStr, inUserStr, inFilePathStr, inFileDataBytes, inGSettings=None): def AgentOSFileBinaryDataBytesCreate(inHostNameStr, inUserStr, inFilePathStr, inFileDataBytes, inGSettings=None):
""" """
Create binary file by the base64 string by the pyOpenRPA.Agent daemon process (safe for JSON transmition) Создать бинарный файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым inFileDataBytes
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: :param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataBytes: :param inFileDataBytes: Строка байт (b'') для отправки в создаваемый файл на стороне Агента.
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lFileDataBase64Str = base64.b64encode(inFileDataBytes).decode("utf-8") lFileDataBase64Str = base64.b64encode(inFileDataBytes).decode("utf-8")
@ -261,14 +265,14 @@ def AgentOSFileBinaryDataBytesCreate(inHostNameStr, inUserStr, inFilePathStr, in
def AgentOSFileBinaryDataBase64StrCreate(inHostNameStr, inUserStr, inFilePathStr, inFileDataBase64Str, inGSettings=None): def AgentOSFileBinaryDataBase64StrCreate(inHostNameStr, inUserStr, inFilePathStr, inFileDataBase64Str, inGSettings=None):
""" """
Create binary file by the base64 string by the pyOpenRPA.Agent daemon process (safe for JSON transmission) Создать бинарный файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым, декодированным с формата base64: inFileDataBase64Str
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: :param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataBase64Str: :param inFileDataBase64Str: Строка в формате base64 для отправки в создаваемый файл на стороне Агента.
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = { lActivityItemDict = {
@ -284,14 +288,14 @@ def AgentOSFileBinaryDataBase64StrCreate(inHostNameStr, inUserStr, inFilePathStr
def AgentOSFileBinaryDataBase64StrAppend(inHostNameStr, inUserStr, inFilePathStr, inFileDataBase64Str, inGSettings = None): def AgentOSFileBinaryDataBase64StrAppend(inHostNameStr, inUserStr, inFilePathStr, inFileDataBase64Str, inGSettings = None):
""" """
Append binary file by the base64 string by the pyOpenRPA.Agent daemon process (safe for JSON transmission) Добавить бинарную информацию в существующий бинарный файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым, декодированным с формата base64: inFileDataBase64Str
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: :param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataBase64Str: :param inFileDataBase64Str: Строка в формате base64 для отправки в создаваемый файл на стороне Агента.
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = { lActivityItemDict = {
@ -308,15 +312,15 @@ def AgentOSFileBinaryDataBase64StrAppend(inHostNameStr, inUserStr, inFilePathStr
# Send text file to Agent (string) # Send text file to Agent (string)
def AgentOSFileTextDataStrCreate(inHostNameStr, inUserStr, inFilePathStr, inFileDataStr, inEncodingStr = "utf-8",inGSettings=None): def AgentOSFileTextDataStrCreate(inHostNameStr, inUserStr, inFilePathStr, inFileDataStr, inEncodingStr = "utf-8",inGSettings=None):
""" """
Create text file by the string by the pyOpenRPA.Agent daemon process Создать текстовый файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым inFileDataStr в кодировке inEncodingStr
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: :param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataStr: :param inFileDataStr: Строка для отправки в создаваемый файл на стороне Агента.
:param inEncodingStr: :param inEncodingStr: Кодировка текстового файла. По умолчанию utf-8
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = { lActivityItemDict = {
@ -331,13 +335,13 @@ def AgentOSFileTextDataStrCreate(inHostNameStr, inUserStr, inFilePathStr, inFile
def AgentOSFileBinaryDataBase64StrReceive(inHostNameStr, inUserStr, inFilePathStr, inGSettings = None): def AgentOSFileBinaryDataBase64StrReceive(inHostNameStr, inUserStr, inFilePathStr, inGSettings = None):
""" """
Read binary file and encode in base64 to transmit (safe for JSON transmition) Выполнить чтение бинарного файла и получить содержимое в формате base64 (строка)
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: File path to read :param inFilePathStr: Путь к бинарному файлу на чтение на стороне Агента
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = { lActivityItemDict = {
@ -353,13 +357,14 @@ def AgentOSFileBinaryDataBase64StrReceive(inHostNameStr, inUserStr, inFilePathSt
def AgentOSFileBinaryDataReceive(inHostNameStr, inUserStr, inFilePathStr): def AgentOSFileBinaryDataReceive(inHostNameStr, inUserStr, inFilePathStr):
""" """
Read binary file from agent (synchronious) Чтение бинарного файла на стороне Агента по адресу inFilePathStr.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) !ВНИМАНИЕ - СИНХРОННАЯ! Функция не завершится, пока не будет получен результат чтения на стороне Агента.
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: File path to read :param inFilePathStr: Путь к бинарному файлу, который требуется прочитать на стороне Агента
:return: file data bytes :return: Строка байт (b'') - содержимое бинарного файла
""" """
lFileDataBytes = None lFileDataBytes = None
inGSettings = GSettingsGet() # Set the global settings inGSettings = GSettingsGet() # Set the global settings
@ -391,14 +396,16 @@ def AgentOSFileBinaryDataReceive(inHostNameStr, inUserStr, inFilePathStr):
def AgentOSFileTextDataStrReceive(inHostNameStr, inUserStr, inFilePathStr, inEncodingStr="utf-8", inGSettings = None): def AgentOSFileTextDataStrReceive(inHostNameStr, inUserStr, inFilePathStr, inEncodingStr="utf-8", inGSettings = None):
""" """
Read text file in the agent GUI session Чтение текстового файла на стороне Агента по адресу inFilePathStr. По ГИУД с помощью функции AgentActivityItemReturnGet можно будет получить текстовую строку данных, которые были расположены в файле.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) !ВНИМАНИЕ - АСИНХРОННАЯ! Функция завершится сразу, не дожидаясь окончания выполнения операции на стороне Агента.
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: File path to read :param inFilePathStr: Путь к бинарному файлу, который требуется прочитать на стороне Агента
:param inEncodingStr: Text file encoding. Default 'utf-8' :param inEncodingStr: Кодировка текстового файла. По умолчанию utf-8
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = { lActivityItemDict = {
@ -413,12 +420,14 @@ def AgentOSFileTextDataStrReceive(inHostNameStr, inUserStr, inFilePathStr, inEnc
def AgentProcessWOExeUpperUserListGet(inHostNameStr, inUserStr, inGSettings = None): def AgentProcessWOExeUpperUserListGet(inHostNameStr, inUserStr, inGSettings = None):
""" """
Return the process list only for the current user (where Agent is running) without .EXE in upper case. Can use in ActivityItem from Orchestrator to Agent Получить список процессов, которые выполняется на сессии Агента. Все процессы фиксируются без постфикса .exe, а также в верхнем регистре.
ПРИМЕР РЕЗУЛЬТАТА, КОТОРЫЙ МОЖНО ПОЛУЧИТЬ ПО ГУИД ЧЕРЕЗ ФУНКЦИЮ AgentActivityItemReturnGet: ["ORCHESTRATOR", "AGENT", "CHROME", "EXPLORER", ...]
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления :param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid! :return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
""" """
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = { lActivityItemDict = {
@ -432,10 +441,10 @@ def AgentProcessWOExeUpperUserListGet(inHostNameStr, inUserStr, inGSettings = No
return AgentActivityItemAdd(inGSettings=inGSettings, inHostNameStr=inHostNameStr, inUserStr=inUserStr, inActivityItemDict=lActivityItemDict) return AgentActivityItemAdd(inGSettings=inGSettings, inHostNameStr=inHostNameStr, inUserStr=inUserStr, inActivityItemDict=lActivityItemDict)
# OS DEFS # OS DEFS
def OSLogoff(): def OSLogoff():
""" """
Logoff the current orchestrator session Выполнить отключение сессии, на которой выполняется Оркестратор.
:return: :return:
""" """
os.system("shutdown /l") os.system("shutdown /l")
@ -447,7 +456,7 @@ def OSCredentialsVerify(inUserStr, inPasswordStr, inDomainStr=""): ##
:param inUserStr: Наименование пользователя :param inUserStr: Наименование пользователя
:param inPasswordStr: Пароль :param inPasswordStr: Пароль
:param inDomainStr: Домен. Если домена нет - не указывать или "" :param inDomainStr: Домен. Если домена нет - не указывать или ""
:return: True - Credentials are actual; False - Credentials are not actual :return: True - Учетные данные верны; False - Учетные данные представлены некорректно
""" """
try: try:
hUser = win32security.LogonUser( hUser = win32security.LogonUser(
@ -461,12 +470,13 @@ def OSCredentialsVerify(inUserStr, inPasswordStr, inDomainStr=""): ##
def OSRemotePCRestart(inHostStr, inForceBool=True, inLogger = None): def OSRemotePCRestart(inHostStr, inForceBool=True, inLogger = None):
""" """
Send signal via power shell to restart remote PC Отправить сигнал на удаленную перезагрузку операционной системы.
ATTENTION: Orchestrator user need to have restart right on the Remote machine to restart PC.
!ВНИМАНИЕ! Перезапуск будет принят, если учетная запись имеет полномочия на перезапуск на соответсвующей машине.
:param inLogger: logger to log powershell result in logs :param inHostStr: Имя хоста, который требуется перезагрузить
:param inHostStr: PC hostname which you need to restart. :param inForceBool: True - принудительная перезагрузка; False - мягкая перезагрузка (дождаться окончания выполнения всех операций). По умолчанию True
:param inForceBool: True - send signal to force retart PC; False - else case :param inLogger: Логгер, в который отправлять информацию о результате выполнения команды
:return: :return:
""" """
if inLogger is None: inLogger = OrchestratorLoggerGet() if inLogger is None: inLogger = OrchestratorLoggerGet()
@ -476,12 +486,12 @@ def OSRemotePCRestart(inHostStr, inForceBool=True, inLogger = None):
def OSCMD(inCMDStr, inRunAsyncBool=True, inLogger = None): def OSCMD(inCMDStr, inRunAsyncBool=True, inLogger = None):
""" """
OS send command in shell locally Отправить команду на выполнение на сессию, где выполняется Оркестратор.
:param inCMDStr: :param inCMDStr: Команда на отправку
:param inRunAsyncBool: :param inRunAsyncBool: True - выполнить команду в асинхронном режиме (не дожидаться окончания выполнения программы и не захватывать результат выполнения); False - Ждать окончания выполнения и захватывать результат
:param inLogger: :param inLogger: Логгер, в который отправлять информацию о результате выполнения команды
:return: CMD result string :return: Строка результата выполнения команды. Если inRunAsyncBool = False
""" """
if inLogger is None: inLogger = OrchestratorLoggerGet() if inLogger is None: inLogger = OrchestratorLoggerGet()
lResultStr = "" lResultStr = ""
@ -521,7 +531,7 @@ def OSCMD(inCMDStr, inRunAsyncBool=True, inLogger = None):
def OrchestratorRestart(inGSettings=None): def OrchestratorRestart(inGSettings=None):
""" """
Orchestrator restart Перезапуск Оркестратора с сохранением информации о запущенных RDP сессиях.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон) :param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
""" """
@ -536,27 +546,27 @@ def OrchestratorRestart(inGSettings=None):
def OrchestratorLoggerGet() -> logging.Logger: def OrchestratorLoggerGet() -> logging.Logger:
""" """
Get the logger from the Orchestrator Получить логгер Оркестратора
:return: :return: Логгер
""" """
return GSettingsGet().get("Logger",None) return GSettingsGet().get("Logger",None)
def OrchestratorScheduleGet() -> schedule: def OrchestratorScheduleGet() -> schedule:
""" """
Get the schedule (schedule.readthedocs.io) from the Orchestrator Базовый объект расписания, который можно использовать для запуска / остановки роботов.
For example you can use: Подробнее про объект schedule и его примеры использования см. по адресу: schedule.readthedocs.io
.. code-block:: python .. code-block:: python
# One schedule threaded # Однопоточный schedule
Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(lProcess.StatusCheckStart) Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(lProcess.StatusCheckStart)
#New schedule thread # See def description Orchestrator.OrchestratorThreadStart #Многопоточный schedule. См. описание Orchestrator.OrchestratorThreadStart
Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(Orchestrator.OrchestratorThreadStart,lProcess.StatusCheckStart) Orchestrator.OrchestratorScheduleGet().every(5).seconds.do(Orchestrator.OrchestratorThreadStart,lProcess.StatusCheckStart)
:return: schedule module. Example see here https://schedule.readthedocs.io/en/stable/examples.html :return: schedule объект
""" """
if GSettingsGet().get("SchedulerDict",{}).get("Schedule",None) is None: if GSettingsGet().get("SchedulerDict",{}).get("Schedule",None) is None:
GSettingsGet()["SchedulerDict"]["Schedule"]=schedule GSettingsGet()["SchedulerDict"]["Schedule"]=schedule

Loading…
Cancel
Save