#######################Configuration#Section################################# #comma delimited services Servicelist = "Spooler,Dhcp,serv3" ############################################################################# import os; import ctypes import sys import time import datetime s = 0 min = '5' datenow = datetime.datetime.now() datestamp = datenow + datetime.timedelta(minutes = int(min) +1) # Create 'TimeStampStatus' file and write current time def WriteTimeStampToTheTimeStampFile(datetowrite): Path_for_time_stamp_file = r"" Os_Path = r"{0}\Program Files (x86)".format(os.environ['systemdrive']) if os.path.exists(Os_Path): Path_for_time_stamp_file = r"{0}\Program Files (x86)\ITarian\Endpoint Manager\rmmlogs\TimeStampStatusService.txt".format(os.environ['systemdrive']) else: Path_for_time_stamp_file = r"{0}\Program Files\ITarian\Endpoint Manager\rmmlogs\TimeStampStatusService.txt".format(os.environ['systemdrive']) open(Path_for_time_stamp_file, "w+").write(str(datetowrite.strftime("%y-%m-%d %H:%M:%S"))) # read 'TimeStampStatus' file def readTimeStampStatus(): Path_for_time_stamp_file = r"" Os_Path = r"{0}\Program Files (x86)".format(os.environ['systemdrive']) if os.path.exists(Os_Path): Path_for_time_stamp_file = r"{0}\Program Files (x86)\ITarian\Endpoint Manager\rmmlogs\TimeStampStatusService.txt".format(os.environ['systemdrive']) else: Path_for_time_stamp_file = r"{0}\Program Files\ITarian\Endpoint Manager\rmmlogs\TimeStampStatusService.txt".format(os.environ['systemdrive']) vartime = open(Path_for_time_stamp_file, "r") time = vartime.read() return time def verifyfileexist(): Path_for_time_stamp_file = "" Os_Path = r"{0}\Program Files (x86)".format(os.environ['systemdrive']) if os.path.exists(Os_Path): Path_for_time_stamp_file = r"{0}\Program Files (x86)\ITarian\Endpoint Manager\rmmlogs\TimeStampStatusService.txt".format(os.environ['systemdrive']) else: Path_for_time_stamp_file = r"{0}\Program Files\ITarian\Endpoint Manager\rmmlogs\TimeStampStatusService.txt".format(os.environ['systemdrive']) return Path_for_time_stamp_file class disable_file_system_redirection: _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection def __enter__(self): self.old_value = ctypes.c_long() self.success = self._disable(ctypes.byref(self.old_value)) def __exit__(self, type, value, traceback): if self.success: self._revert(self.old_value) with disable_file_system_redirection(): def IsServiceRunning(serName, nr): s = nr ServiceListAvailable = serName if "," in ServiceListAvailable: list = ServiceListAvailable.split(',') for xcom in list: command1 = 'sc query "' + xcom + '" | findstr STATE' proObj = os.popen(command1) runServices = str(proObj.read()) if "STOPPED" in runServices: print(xcom + " is Stopped") s = 1 else: command1 = 'sc query "' + ServiceListAvailable + '" | findstr STATE' proObj = os.popen(command1) runServices = str(proObj.read()) if "STOPPED" in runServices: print(ServiceListAvailable + " is Stopped") s = 1 return s def alert(arg): sys.stderr.write("%d%d%d" % (arg, arg, arg)) if not os.path.exists(verifyfileexist()): s = IsServiceRunning(Servicelist, s) if s==1: WriteTimeStampToTheTimeStampFile(datestamp) alert(1) else: alert(0) else: statusdate = datetime.datetime.strptime(readTimeStampStatus(), '%y-%m-%d %H:%M:%S') if datenow < statusdate: alert(0) else: s = IsServiceRunning(Servicelist, s) if s==1: WriteTimeStampToTheTimeStampFile(datestamp) alert(1) else: alert(0)