|
|
|
@ -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)
|
|
|
|
|