python socket监控软件框架
服务器端:
#!/usr/bin/env python
import SocketServer
import datetime
import pickle
pfile ='h_dic.pkl'
host_status = {}
f = open('client.txt')
while True:
line = f.readline().split()
if len(line)==0:break
host_status[line[0]] = []
f.close()
class myMonitorHandler(SocketServer.BaseRequestHandler):
'''This is the Monitor server'''
def handle(self):
recv_data = self.request.recv(1024)
if self.client_address[0] == '192.168.177.130':
f = file(pfile,'w')
pickle.dump(host_status,f)
f.close()
if self.client_address[0] in host_status.keys():
host_status[self.client_address[0]].append((datetime.datetime.now(),recv_data))
print'From %s: %s %s'%(self.client_address,datetime.datetime.now(),recv_data)
else:
print'sorry,ip % is not in the monitor list'% self.client_address[0]
for t,m in host_status.items():
print t,m
if __name__ == "__main__":
host,port = '',18000
server = SocketServer.ThreadingTCPServer((host,port),myMonitorHandler)
server.serve_forever()
客户端:
import socket
import time
host,port = '192.168.177.130',18000
while True:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send('up')
s.close()
time.sleep(30)
辅程序端:
#!/usr/bin/env python
import pickle
import datetime
f = file('h_dic.pkl','rb')
host_status = pickle.load(f)
for h,m in host_status.items():
if len(m) !=0:
old_time = m[-1][0]
time_diff = (datetime.datetime.now() - old_time).seconds
if time_diff > 30:
print 'NO data received from %s for %s,please check'%(h,time_diff)
else:
print h,(datetime.datetime.now() - old_time).seconds

浙公网安备 33010602011771号