version 1.1, 2005/05/15 08:35:00
|
version 1.5, 2005/05/15 12:12:15
|
Line 6 import os
|
Line 6 import os
|
import os.path |
import os.path |
import time |
import time |
|
|
module_list=['33335','22222','ff'] |
module_list=['11150','11220','11240','11340','12010','13110','13210','13310','13500','20610','21210','21600','22310','23110','24110','24212','24231','24241','24251','24321','24341','24411','24421','24431','24441','24511','24521','30511','31111','31120','31131','31142','31151','31161','31171','31221','31231','31252','31305','31410','32010','33100'] |
grepString="DragThing" |
|
|
# station non checked: 31211 |
|
|
|
grepString="firefox-bin" |
|
|
def zptFile(self, path, orphaned=False): |
def zptFile(self, path, orphaned=False): |
"""returns a page template file from the product""" |
"""returns a page template file from the product""" |
Line 30 def getLastLine(lines):
|
Line 33 def getLastLine(lines):
|
|
|
def checkFormat(line,formats): |
def checkFormat(line,formats): |
"""checke formats""" |
"""checke formats""" |
|
|
splitted=line.split("GET") |
splitted=line.split("GET") |
splitted=splitted[1].split() |
splitted=splitted[1].split() |
|
|
splitted2=splitted[0].split("/") |
splitted2=splitted[0].split("/") |
|
|
|
try: |
if splitted2[4][0:3] in formats: |
if splitted2[4][0:3] in formats: |
return True |
return True |
else: |
else: |
return False |
return False |
|
except: |
|
return False |
|
|
|
def getIP(line): |
|
"""ip aus pound log line""" |
|
splitted=line.split() |
|
try: |
|
return splitted[5] |
|
except: |
|
return 0 |
|
|
def cmpLine(line): |
def cmpLine(line): |
"""gibt minuten differenz der letzen beiden eintraege""" |
"""gibt minuten zwischen letztem Eintrag und localtime""" |
|
|
|
# Z2.log |
|
## tmp=line.split("[") |
|
## tmp=tmp[1].split("]") |
|
|
|
## timestr=tmp[0] |
|
|
tmp=line.split("[") |
## |
tmp=tmp[1].split("]") |
|
|
#pound log |
|
tmp=line.split() |
|
timestr=tmp[2] |
|
|
timestr=tmp[0] |
|
|
|
split=timestr.split(":") |
split=timestr.split(":") |
time1=int(split[1])*60+int(split[2]) |
time1=int(split[0])*60+int(split[1]) |
|
|
localtime=time.asctime(time.localtime()) |
localtime=time.asctime(time.localtime()) |
|
|
split=localtime.split(":") |
split=localtime.split(":") |
time2=int(split[0].split()[3])*60+int(split[1]) |
time2=int(split[0].split()[3])*60+int(split[1]) |
|
|
Line 64 class checkStation(SimpleItem):
|
Line 87 class checkStation(SimpleItem):
|
|
|
meta_type="check Media Stations" |
meta_type="check Media Stations" |
|
|
def asctime(self): |
manage_options=SimpleItem.manage_options+( |
|
{'label':'Overview Stations','action':'overviewStations'}, |
|
{'label':'change check','action':'changeCheckStationForm'}, |
|
{'label':'checkRebootDead','action':'checkRebootDead'}, |
|
{'label':'Reboot Overview','action':'rebootOverview'}, |
|
) |
|
def asctime(self,tm): |
|
try: |
return time.asctime(tm) |
return time.asctime(tm) |
|
except: |
|
return "never" |
|
|
def __init__(self, id, path): |
def __init__(self, id, path): |
"""init""" |
"""init""" |
Line 73 class checkStation(SimpleItem):
|
Line 105 class checkStation(SimpleItem):
|
self.id=id |
self.id=id |
self.modulOverview={} |
self.modulOverview={} |
|
|
def checkStation(self,nr,time=5,formats=["VID"]): |
def checkStation(self,nr,time=10,formats=["VID","BRA","ZOG"]): |
"""check station with nr nr""" |
"""check station with nr nr""" |
txt=[] |
txt=[] |
|
|
Line 88 class checkStation(SimpleItem):
|
Line 120 class checkStation(SimpleItem):
|
return True,"",0 |
return True,"",0 |
|
|
cmpT=cmpLine(line) |
cmpT=cmpLine(line) |
|
ip=getIP(line) |
|
|
if not checkFormat(line,formats): |
if not checkFormat(line,formats): |
# teste ob letzte Zeile vom format in formats |
# teste ob letzte Zeile vom format in formats |
|
|
return True,line,cmpT |
return True,line,cmpT,ip |
|
|
|
|
if cmpT > time: |
if cmpT > time: |
return False,line,cmpT |
return False,line,cmpT,ip |
|
|
else: |
else: |
return True,line,cmpT |
return True,line,cmpT,ip |
|
|
def getModuls(self): |
def getModuls(self): |
"""getModuls""" |
"""getModuls""" |
Line 113 class checkStation(SimpleItem):
|
Line 146 class checkStation(SimpleItem):
|
|
|
ips={"22222":"127.0.0.1","33335":"127.0.0.2"} |
ips={"22222":"127.0.0.1","33335":"127.0.0.2"} |
|
|
def rebootStation(self,modul): |
def rebootStation(self,ip): |
"""neustart""" |
"""neustart""" |
ip=self.ips[modul] |
retStr="" |
|
#ip=self.ips[modul] |
|
|
str="""ssh root@%s "ps -xa | grep %s" """ |
str="""ssh root@%s "ps -xa | grep %s" """ |
rets=os.popen(str%(ip,grepString)).readlines() |
rets=os.popen(str%(ip,grepString)).readlines() |
Line 125 class checkStation(SimpleItem):
|
Line 159 class checkStation(SimpleItem):
|
if ret.find("grep") <= 0: |
if ret.find("grep") <= 0: |
process=ret.split()[0] |
process=ret.split()[0] |
str="""ssh root@%s kill -9 %s """ |
str="""ssh root@%s kill -9 %s """ |
rets=os.popen(str%(ip,process)).readlines() |
os.popen(str%(ip,process)).readlines() |
print "WW",str%(ip,process) |
retStr+=str%(ip,process) + "<br>" |
|
return retStr |
|
|
def checkRebootDead(self,timer=5): |
def checkRebootDead(self,timer=10): |
"""checks and reboots non responding firefox""" |
"""checks and reboots non responding firefox""" |
self.lastCheck=time.localtime() |
self.lastCheck=time.localtime() |
|
ret="<html><body><p>" |
|
|
for modul in self.getModuls(): |
for modul in self.getModuls(): |
|
|
checked=self.checkStation(modul,time=timer,formats=["VID"]) |
checked=self.checkStation(modul,time=timer) |
if not checked[0]: |
if not checked[0]: |
|
|
self.rebootStation(modul) |
ret+=self.rebootStation(checked[3]) |
if not hasattr(self,'modulOverview'): |
if not hasattr(self,'modulOverview'): |
setattr(self,'modulOverview',{}) |
setattr(self,'modulOverview',{}) |
self.modulOverview[modul]=time.localtime() |
self.modulOverview[modul]=time.localtime() |
|
|
|
return ret |
|
|
def rebootOverview(self): |
def rebootOverview(self): |
"""give Overview""" |
"""give Overview""" |