Annotation of checkStation/checkStation.py, revision 1.1.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>