#RobotDaemonBugFix #RobotDaemonActivityStopFlagForceFlagCloseOnlyCurrentUser

#NeedTest
dev-linux
Ivan Maslov 5 years ago
parent bea1a402ef
commit 52416cdf47

@ -37,13 +37,15 @@ while True:
if (
lActivityDateTime>=lDaemonStartDateTime and
lCurrentDateTime>=lActivityDateTime and
(lItem["activityType"],lActivityDateTime,lItem["processPath"],lItem["processArgs"]) not in lDaemonActivityLogDict):
(lItem["activityType"],lActivityDateTime,lItem["processPath"]) not in lDaemonActivityLogDict):
#Выполнить операцию
print("ProcessStart:"+lItem["processPath"])
#Запись в массив отработанных активностей
lDaemonActivityLogDict[(lItem["activityType"],lActivityDateTime,lItem["processPath"],lItem["processArgs"])]={"ActivityStartDateTime":lCurrentDateTime}
lDaemonActivityLogDict[(lItem["activityType"],lActivityDateTime,lItem["processPath"])]={"ActivityStartDateTime":lCurrentDateTime}
#Запустить процесс
subprocess.Popen([lItem["processPath"],lItem["processArgs"]],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
lItemArgs=[lItem["processPath"]]
lItemArgs.extend(lItem["processArgs"])
subprocess.Popen(lItemArgs,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
#Определить вид активности
if lItem["activityType"]=="processStop":
#Вид активности - остановка процесса
@ -58,8 +60,16 @@ while True:
(lItem["activityType"],lActivityDateTime,lItem["processName"]) not in lDaemonActivityLogDict):
#Запись в массив отработанных активностей
lDaemonActivityLogDict[(lItem["activityType"],lActivityDateTime,lItem["processName"])]={"ActivityStartDateTime":lCurrentDateTime}
#Сформировать команду на завершение
lActivityCloseCommand='taskkill /im '+lItem["processName"]'
#TODO Сделать безопасную обработку,если параметра нет в конфигурации
if lItem['flagCloseForce']:
lActivityCloseCommand+=" /F"
#Завершить процессы только текущего пользоваиеля
if lItem['flagCloseOnlyCurrentUser']:
lActivityCloseCommand+=' /fi "username eq %username%"'
#Завершить процесс
os.system('taskkill /f /im '+lItem["processName"])
os.system(lActivityCloseCommand)
print("ProcessStop "+lItem["processName"])
#Уснуть до следующего прогона
time.sleep(lDaemonLoopSeconds)

@ -34,7 +34,11 @@
"activityType":"processStop",
"time":"9:20",
"timeZone":"4",
"processName":"OpenRPARobotDaemon.exe"
"processName":"OpenRPARobotDaemon.exe",
"_flagCloseForce":"Признак, что процесс нужно принудительно закрыть (если флага нет, то на процесс просто посылается команда terminate)",
"flagCloseForce":true,
"_flagCloseOnlyCurrentUser":"Признак, что процесс нужно закрыть только у текущего пользователя",
"flagCloseOnlyCurrentUser":true
}
]

Loading…
Cancel
Save