Annotation of checkStation/checkStation.py, revision 1.1
1.1 ! dwinter 1: from OFS.SimpleItem import SimpleItem
! 2: from Globals import package_home
! 3:
! 4: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
! 5: import os
! 6: import os.path
! 7: import time
! 8:
! 9: module_list=['33335','22222','ff']
! 10: grepString="DragThing"
! 11:
! 12: def zptFile(self, path, orphaned=False):
! 13: """returns a page template file from the product"""
! 14: if orphaned:
! 15: # unusual case
! 16: pt=PageTemplateFile(os.path.join(package_home(globals()), path))
! 17: else:
! 18: pt=PageTemplateFile(os.path.join(package_home(globals()), path)).__of__(self)
! 19: return pt
! 20:
! 21:
! 22: def getLastLine(lines):
! 23: """letzte"""
! 24: length=len(lines)
! 25:
! 26: if length>0:
! 27: return lines[length-1]
! 28: else:
! 29: return None
! 30:
! 31: def checkFormat(line,formats):
! 32: """checke formats"""
! 33: splitted=line.split("GET")
! 34: splitted=splitted[1].split()
! 35: splitted2=splitted[0].split("/")
! 36:
! 37: if splitted2[4][0:3] in formats:
! 38: return True
! 39: else:
! 40: return False
! 41:
! 42:
! 43: def cmpLine(line):
! 44: """gibt minuten differenz der letzen beiden eintraege"""
! 45:
! 46:
! 47: tmp=line.split("[")
! 48: tmp=tmp[1].split("]")
! 49:
! 50: timestr=tmp[0]
! 51:
! 52: split=timestr.split(":")
! 53: time1=int(split[1])*60+int(split[2])
! 54:
! 55: localtime=time.asctime(time.localtime())
! 56: split=localtime.split(":")
! 57: time2=int(split[0].split()[3])*60+int(split[1])
! 58:
! 59:
! 60: return time2-time1
! 61:
! 62: class checkStation(SimpleItem):
! 63: """test ob station lebt"""
! 64:
! 65: meta_type="check Media Stations"
! 66:
! 67: def asctime(self):
! 68: return time.asctime(tm)
! 69:
! 70: def __init__(self, id, path):
! 71: """init"""
! 72: self.path=path #pfad fuer logfile
! 73: self.id=id
! 74: self.modulOverview={}
! 75:
! 76: def checkStation(self,nr,time=5,formats=["VID"]):
! 77: """check station with nr nr"""
! 78: txt=[]
! 79:
! 80: txtFh = os.popen("grep /%s/ %s | tail "%(nr,self.path))
! 81: for line in txtFh.readlines():
! 82: txt.append(line)
! 83:
! 84:
! 85: line=getLastLine(txt)
! 86:
! 87: if not line:
! 88: return True,"",0
! 89:
! 90: cmpT=cmpLine(line)
! 91:
! 92: if not checkFormat(line,formats):
! 93: # teste ob letzte Zeile vom format in formats
! 94:
! 95: return True,line,cmpT
! 96:
! 97:
! 98: if cmpT > time:
! 99: return False,line,cmpT
! 100:
! 101: else:
! 102: return True,line,cmpT
! 103:
! 104: def getModuls(self):
! 105: """getModuls"""
! 106: return module_list
! 107: def overviewStations(self,time=5):
! 108: """overview"""
! 109: self.REQUEST.SESSION['outTime']=time
! 110:
! 111: zp=zptFile(self,"zpt/overview.zpt")
! 112: return zp()
! 113:
! 114: ips={"22222":"127.0.0.1","33335":"127.0.0.2"}
! 115:
! 116: def rebootStation(self,modul):
! 117: """neustart"""
! 118: ip=self.ips[modul]
! 119:
! 120: str="""ssh root@%s "ps -xa | grep %s" """
! 121: rets=os.popen(str%(ip,grepString)).readlines()
! 122:
! 123: for ret in rets:
! 124:
! 125: if ret.find("grep") <= 0:
! 126: process=ret.split()[0]
! 127: str="""ssh root@%s kill -9 %s """
! 128: rets=os.popen(str%(ip,process)).readlines()
! 129: print "WW",str%(ip,process)
! 130:
! 131: def checkRebootDead(self,timer=5):
! 132: """checks and reboots non responding firefox"""
! 133: self.lastCheck=time.localtime()
! 134:
! 135: for modul in self.getModuls():
! 136:
! 137: checked=self.checkStation(modul,time=timer,formats=["VID"])
! 138: if not checked[0]:
! 139:
! 140: self.rebootStation(modul)
! 141: if not hasattr(self,'modulOverview'):
! 142: setattr(self,'modulOverview',{})
! 143: self.modulOverview[modul]=time.localtime()
! 144:
! 145:
! 146: def rebootOverview(self):
! 147: """give Overview"""
! 148: pt=zptFile(self,'zpt/rebootOverview.zpt')
! 149: return pt()
! 150:
! 151: def changeCheckStationForm(self):
! 152: """form for change"""
! 153:
! 154: pt=zptFile(self, 'zpt/ChangeCheckStation.zpt')
! 155:
! 156: return pt()
! 157:
! 158: def changeCheckStation(self,path,RESPONSE=None):
! 159: """change"""
! 160: self.path=path
! 161:
! 162: if RESPONSE:
! 163: RESPONSE.redirect("manage_main")
! 164:
! 165:
! 166: def manage_addCheckStationForm(self):
! 167: """add"""
! 168: pt=zptFile(self,'zpt/AddCheckStation')
! 169: return pt()
! 170:
! 171: def manage_addCheckStation(self,id,path,RESPONSE=None):
! 172: """manage checkstation"""
! 173:
! 174: newObj=checkStation(id,path)
! 175: self._setObject(id,newObj)
! 176:
! 177: if RESPONSE is not None:
! 178: RESPONSE.redirect('manage_main')
! 179:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>