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

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

@ -25,16 +25,19 @@ pyOpenRPA - роботы Вам помогут!
**************************************************
Автор
**************************************************
Маслов Иван Дмитриевич
Маслов Иван Дмитриевич (с 2019г.)
**************************************************
Правообладатель
**************************************************
**с 2022г.**
ООО "ОПЕН РПА", ОГРН 1227700251350, ИНН/КПП 9718191421/771801001
г. Москва: 125310, улица Муравская
г. Санкт-Петербург: 197022, улица Льва Толстого
**с 2019г. по 2021г.**
Маслов Иван Дмитриевич (с 2019г.)
**************************************************
Центр поддержки клиентов
**************************************************
@ -48,7 +51,7 @@ pyOpenRPA - роботы Вам помогут!
- Телеграм канал: @pyOpenRPA :: `Присоединиться <https://t.me/pyOpenRPA>`_
**************************************************
Иван Маслов (Генеральный директор ООО "ОПЕН РПА")
Иван Маслов (генеральный директор ООО "ОПЕН РПА")
**************************************************
- Телефон/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)
- 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)
- 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)
- keyboard, v0.13.3, лицензия MIT (https://github.com/boppreh/keyboard)
- 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)
- 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)
- 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)
- 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)
- JupiterNotebook v6.1.4, лицензия BSD 3-Clause, https://github.com/jupyter/notebook/blob/main/LICENSE
- 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
- 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
- PyAutoGUI, v0.9.44, лицензия BSD 3-Clause https://github.com/asweigart/pyautogui
- keyboard, v0.13.3, лицензия MIT https://github.com/boppreh/keyboard)
- 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
- 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
- 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
- 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
- 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`
**************************************************
Что такое активность (ActivityItem)
**************************************************
Архитектура pyOpenRPA позволяет обмениваться сообщениями о выполнении функций через механизм активностей (ActivityItem).
На стороне Агента и Оркестратора реализована процессорная очередь, которая последовательно выполняет поставленные активности. Результат этих активностей сообщается инициатору (см. функции группы Agent... в Оркестраторе)
**************************************************
pyOpenRPA.Orchestrator.__Orchestrator__
**************************************************

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

@ -96,7 +96,7 @@ def AgentActivityItemReturnExists(inGUIDStr, inGSettings = None):
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inGUIDStr: ГУИД (GUID) активности (ActivityItem)
:return: True - Активность присутствует ; False - Активность еще не была выполнена на стороне Агента
:return: True - Активность присутствует; False - Активность еще не была выполнена на стороне Агента
"""
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):
"""
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
!ATTENTION! Use only after Orchestrator initialization! Before orchestrator init exception will be raised.
Ожидает появления результата по активности (ActivityItem). Возвращает результат выполнения активности.
!ВНИМАНИЕ! Замораживает поток, пока не будет получен результат.
!ВНИМАНИЕ! Запускать следует после того как будет инициализировано ядро Оркестратора (см. функцию OrchestratorInitWait), иначе будет инициирована ошибка.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inGUIDStr: ГУИД (GUID) активности (ActivityItem)
:param inCheckIntervalSecFloat: Interval in sec of the check Activity Item result
: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!
:param inCheckIntervalSecFloat: Интервал в секундах, с какой частотой выполнять проверку результата. По умолчанию 0.5
:return: Результат выполнения активности. !ВНИМАНИЕ! Возвращаются только то результаты, которые могут быть интерпретированы в JSON формате.
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
#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):
"""
Send CMD to OS thought the pyOpenRPA.Agent daemon. Result return to log + Orchestrator by the A2O connection
Отправка команды командной строки на сессию, где работает pyOpenRPA.Agent. Результат выполнения команды можно выводить в лог оркестратора.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inCMDStr: command to execute on the Agent session
:param inRunAsyncBool: True - Agent processor don't wait execution; False - Agent processor wait cmd execution
:param inSendOutputToOrchestratorLogsBool: True - catch cmd execution output and send it to the Orchestrator logs; Flase - else case; 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 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
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inCMDStr: Команда для исполнения на стороне сессии Агента
:param inRunAsyncBool: True - Агент не ожидает окончания выполнения команды. !ВНИМАНИЕ! Логирование в такой ситуации будет невозможно; False - Агент ожидает окончания выполнения операции.
:param inSendOutputToOrchestratorLogsBool: True - отправлять весь вывод от команды в логи Оркестратора; Flase - Не отправлять; Default True
:param inCMDEncodingStr: Кодировка DOS среды, в которой исполняется команда. Если некорректно установить кодировку - русские символы будут испорчены. По умолчанию установлена "cp1251"
:param inCaptureBool: True - не запускать приложение как отдельное. Результат выполнения команды будет выводиться в окне Агента (если окно Агента присутствует на экране). False - команда будет запущена в отдельном DOS окне.
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = {
@ -153,9 +154,11 @@ def AgentOSCMD(inHostNameStr, inUserStr, inCMDStr, inRunAsyncBool=True, inSendOu
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
lCMDStr = "shutdown /l"
@ -171,16 +174,17 @@ def AgentOSLogoff(inHostNameStr, inUserStr):
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).
Work safety with big files
Thread safe - you can call def even if you dont init the orchestrator - def will be executed later
Отправить файл по адресу inOrchestratorFilePathStr со стороны Оркестратора и сохранить по адресу inAgentFilePathStr на стороне Агента.
Поддерживает передачу крупных файлов (более 2-х Гб.). Функция является синхронной - не закончит свое выполнение, пока файл не будет передан полностью.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
!ВНИМАНИЕ - ПОТОКОБЕЗОПАСНАЯ! Вы можете вызвать эту функцию до инициализации ядра Оркестратора. Оркестратор добавит эту функцию в процессорную очередь на исполение. Если вам нужен результат функции, то необходимо сначала убедиться в том, что ядро Оркестратора было инициализированно (см. функцию OrchestratorInitWait).
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr:
:param inFileDataBytes:
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inOrchestratorFilePathStr: Полный путь к передаваемому файлу на стороне Оркестратора.
:param inAgentFilePathStr: Полный путь к локации, в которую требуется сохранить передаваемый файл.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
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):
"""
Create binary file by the base64 string by the pyOpenRPA.Agent daemon process (safe for JSON transmition)
Создать бинарный файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым inFileDataBytes
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr:
:param inFileDataBytes:
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataBytes: Строка байт (b'') для отправки в создаваемый файл на стороне Агента.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
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):
"""
Create binary file by the base64 string by the pyOpenRPA.Agent daemon process (safe for JSON transmission)
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
Создать бинарный файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым, декодированным с формата base64: inFileDataBase64Str
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr:
:param inFileDataBase64Str:
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataBase64Str: Строка в формате base64 для отправки в создаваемый файл на стороне Агента.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = {
@ -284,14 +288,14 @@ def AgentOSFileBinaryDataBase64StrCreate(inHostNameStr, inUserStr, inFilePathStr
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)
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
Добавить бинарную информацию в существующий бинарный файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым, декодированным с формата base64: inFileDataBase64Str
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr:
:param inFileDataBase64Str:
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataBase64Str: Строка в формате base64 для отправки в создаваемый файл на стороне Агента.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = {
@ -308,15 +312,15 @@ def AgentOSFileBinaryDataBase64StrAppend(inHostNameStr, inUserStr, inFilePathStr
# Send text file to Agent (string)
def AgentOSFileTextDataStrCreate(inHostNameStr, inUserStr, inFilePathStr, inFileDataStr, inEncodingStr = "utf-8",inGSettings=None):
"""
Create text file by the string by the pyOpenRPA.Agent daemon process
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
Создать текстовый файл, который будет расположен по адресу inFilePathStr на стороне Агента с содержимым inFileDataStr в кодировке inEncodingStr
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr:
:param inFileDataStr:
:param inEncodingStr:
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inFilePathStr: Полный путь к сохраняемому файлу на стороне Агента.
:param inFileDataStr: Строка для отправки в создаваемый файл на стороне Агента.
:param inEncodingStr: Кодировка текстового файла. По умолчанию utf-8
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = {
@ -331,13 +335,13 @@ def AgentOSFileTextDataStrCreate(inHostNameStr, inUserStr, inFilePathStr, inFile
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 inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: File path to read
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inFilePathStr: Путь к бинарному файлу на чтение на стороне Агента
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = {
@ -353,13 +357,14 @@ def AgentOSFileBinaryDataBase64StrReceive(inHostNameStr, inUserStr, inFilePathSt
def AgentOSFileBinaryDataReceive(inHostNameStr, inUserStr, inFilePathStr):
"""
Read binary file from agent (synchronious)
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
Чтение бинарного файла на стороне Агента по адресу inFilePathStr.
!ВНИМАНИЕ - СИНХРОННАЯ! Функция не завершится, пока не будет получен результат чтения на стороне Агента.
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: File path to read
:return: file data bytes
:param inFilePathStr: Путь к бинарному файлу, который требуется прочитать на стороне Агента
:return: Строка байт (b'') - содержимое бинарного файла
"""
lFileDataBytes = None
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):
"""
Read text file in the agent GUI session
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
Чтение текстового файла на стороне Агента по адресу inFilePathStr. По ГИУД с помощью функции AgentActivityItemReturnGet можно будет получить текстовую строку данных, которые были расположены в файле.
!ВНИМАНИЕ - АСИНХРОННАЯ! Функция завершится сразу, не дожидаясь окончания выполнения операции на стороне Агента.
:param inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inUserStr: Наименование пользователя, на графической сессии которого запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
:param inFilePathStr: File path to read
:param inEncodingStr: Text file encoding. Default 'utf-8'
:return: GUID String of the ActivityItem - you can wait (sync or async) result by this guid!
:param inFilePathStr: Путь к бинарному файлу, который требуется прочитать на стороне Агента
:param inEncodingStr: Кодировка текстового файла. По умолчанию utf-8
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
:return: ГУИД (GUID) строка Активности (ActivityItem). Далее можно ожидать результат этой функции по ГУИД с помощью функции AgentActivityItemReturnGet
"""
inGSettings = GSettingsGet(inGSettings=inGSettings) # Set the global settings
lActivityItemDict = {
@ -413,12 +420,14 @@ def AgentOSFileTextDataStrReceive(inHostNameStr, inUserStr, inFilePathStr, inEnc
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 inHostNameStr: Наименование хоста, на котором запущен Агент. Наименования подключенных агентов доступно для просмотра в панели управления
: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
lActivityItemDict = {
@ -432,10 +441,10 @@ def AgentProcessWOExeUpperUserListGet(inHostNameStr, inUserStr, inGSettings = No
return AgentActivityItemAdd(inGSettings=inGSettings, inHostNameStr=inHostNameStr, inUserStr=inUserStr, inActivityItemDict=lActivityItemDict)
# OS DEFS
def OSLogoff():
"""
Logoff the current orchestrator session
Выполнить отключение сессии, на которой выполняется Оркестратор.
:return:
"""
os.system("shutdown /l")
@ -447,7 +456,7 @@ def OSCredentialsVerify(inUserStr, inPasswordStr, inDomainStr=""): ##
:param inUserStr: Наименование пользователя
:param inPasswordStr: Пароль
:param inDomainStr: Домен. Если домена нет - не указывать или ""
:return: True - Credentials are actual; False - Credentials are not actual
:return: True - Учетные данные верны; False - Учетные данные представлены некорректно
"""
try:
hUser = win32security.LogonUser(
@ -461,12 +470,13 @@ def OSCredentialsVerify(inUserStr, inPasswordStr, inDomainStr=""): ##
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: PC hostname which you need to restart.
:param inForceBool: True - send signal to force retart PC; False - else case
:param inHostStr: Имя хоста, который требуется перезагрузить
:param inForceBool: True - принудительная перезагрузка; False - мягкая перезагрузка (дождаться окончания выполнения всех операций). По умолчанию True
:param inLogger: Логгер, в который отправлять информацию о результате выполнения команды
:return:
"""
if inLogger is None: inLogger = OrchestratorLoggerGet()
@ -476,12 +486,12 @@ def OSRemotePCRestart(inHostStr, inForceBool=True, inLogger = None):
def OSCMD(inCMDStr, inRunAsyncBool=True, inLogger = None):
"""
OS send command in shell locally
Отправить команду на выполнение на сессию, где выполняется Оркестратор.
:param inCMDStr:
:param inRunAsyncBool:
:param inLogger:
:return: CMD result string
:param inCMDStr: Команда на отправку
:param inRunAsyncBool: True - выполнить команду в асинхронном режиме (не дожидаться окончания выполнения программы и не захватывать результат выполнения); False - Ждать окончания выполнения и захватывать результат
:param inLogger: Логгер, в который отправлять информацию о результате выполнения команды
:return: Строка результата выполнения команды. Если inRunAsyncBool = False
"""
if inLogger is None: inLogger = OrchestratorLoggerGet()
lResultStr = ""
@ -521,7 +531,7 @@ def OSCMD(inCMDStr, inRunAsyncBool=True, inLogger = None):
def OrchestratorRestart(inGSettings=None):
"""
Orchestrator restart
Перезапуск Оркестратора с сохранением информации о запущенных RDP сессиях.
:param inGSettings: Глобальный словарь настроек Оркестратора (синглтон)
"""
@ -536,27 +546,27 @@ def OrchestratorRestart(inGSettings=None):
def OrchestratorLoggerGet() -> logging.Logger:
"""
Get the logger from the Orchestrator
Получить логгер Оркестратора
:return:
:return: Логгер
"""
return GSettingsGet().get("Logger",None)
def OrchestratorScheduleGet() -> schedule:
"""
Get the schedule (schedule.readthedocs.io) from the Orchestrator
For example you can use:
Базовый объект расписания, который можно использовать для запуска / остановки роботов.
Подробнее про объект schedule и его примеры использования см. по адресу: schedule.readthedocs.io
.. code-block:: python
# One schedule threaded
# Однопоточный schedule
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)
: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:
GSettingsGet()["SchedulerDict"]["Schedule"]=schedule

Loading…
Cancel
Save