pythonweb小程序_Python实现的检测web服务器健康状况的小程序

#!/usr/bin/env python

#coding=utf8

"""

使用socket方式来检查服务器的监控状况

"""

from optparse import OptionParser

import socket

import sys

import re

from StringIO import StringIO

class check_server:

"""

该类主要是利用socket建立一个连接以后,发送一个http请求,然后根据返回的状态码,判断主机的健康状况

"""

def __init__(self,address,port,resource):

self.address = address

self.port = port

self.resource = resource

def check(self):

"""

该方法也是该类的主要方法,包括构建请求资源,解析返回结果等

"""

if not self.resource.startswith('/'):

self.resource = '/' + self.resource

request = "GET %s HTTP/1.1\r\nHost:%s\r\n\r\n" %(self.resource,self.address)

#建立一个socket连接

s = socket.socket()

#设置连接超时时间

s.settimeout(10)

print "现在开始对 %s 上的 %s 端口连接......" %(self.address,self.port)

try:

s.connect((self.address,self.port))

print "连接 %s 上端口 %s 成功" %(self.address,self.port)

s.send(request)

response = s.recv(100)

except socket.error,e:

print "连接%s 上端口 %s 失败 ,原因为:%s" %(self.address,self.port,e)

return False

finally:

print "关闭连接"

s.close()

line = StringIO(response).readline()

try:

(http_version,status,messages) = re.split(r'\s+',line,2)

except ValueError:

print "分割响应码失败"

return False

print "返回的状态码是%s" %(status)

if status in ['200','301','302']:

print "服务器的监控状况良好"

else:

print "乖乖,赶快上线看看,咋回事"

if __name__ == '__main__':

"""

处理参数

"""

parser =OptionParser()

parser.add_option("-a","--address",dest="address" ,default='localhost',help="要检查主机的地址或者主机名")

parser.add_option('-p','--port',dest="port",type=int,default=80,help="要检查主机的端口")

parser.add_option('-r','--resource',dest="resource",default="/",help="要检查的资源,比如")

(options,args) = parser.parse_args()

#开始检测鸟

checks = check_server(options.address,options.port,options.resource)

checks.check()

看下效果

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值