首页 / 操作系统 / Linux / Python 使用httplib模块实现监测web服务
以下程序均来自《Python.UNIX和Linux系统管理指南》http://www.linuxidc.com/Linux/2013-06/86448.htmhttplib_check_web.py#!/usr/bin/env pythonimport httplibimport sysdef check_webserver(address, port, resource): if not resource.startswith("/"): resource = "/" + resource try: conn = httplib.HTTPConnection(address, port) print "HTTP connection created successfully" req = conn.request("GET", resource) print "request for %s successful" % resource response = conn.getresponse() print "response status: %s" % response.status except httplib.error, e: print "HTTP connection failed: %s" % e return False finally: conn.close() print "HTTP connection closed successfully" if response.status in [200, 301]: return True else: return Falseif __name__ == "__main__": from optparse import OptionParser parser = OptionParser() parser.add_option("-a", "--address", dest="address", default="localhost", help="ADDRESS for webserver", metavar="ADDRESS") parser.add_option("-p", "--port", dest="port", type="int", default=80, help="PORT for webserver", metavar="PORT") parser.add_option("-r", "--resource", dest="resource", default="index.html", help="RESOURCE to check", metavar="RESOURCE") (options, args) = parser.parse_args() print "options: %s, args: %s" %(options, args) check = check_webserver(options.address, options.port, options.resource) print "check_webserver returned %s" % check sys.exit(not check)
运行结果:成功[root@CentOS python]# python httplib_check_web.py -a 192.168.137.2 -r index.htmloptions: {"resource": "index.html", "port": 80, "address": "192.168.137.2"}, args: []HTTP connection created successfullyrequest for /index.html successfulresponse status: 200HTTP connection closed successfullycheck_webserver returned True不成功,网页不存在的情况[root@centos python]# python httplib_check_web.py -a 192.168.137.2 -r ppp.htmloptions: {"resource": "ppp.html", "port": 80, "address": "192.168.137.2"}, args: []HTTP connection created successfullyrequest for /ppp.html successfulresponse status: 404HTTP connection closed successfullycheck_webserver returned False