博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于socket 的web服务器检测
阅读量:7240 次
发布时间:2019-06-29

本文共 2723 字,大约阅读时间需要 9 分钟。

#!/usr/bin/env python请参考http协议:import socketimport reimport sysdef check_webserver(address, port, resource):    #build up HTTP request string    if not resource.startswith('/'):        resource = '/' + resource    request_string = "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n" %(resource,address)    print 'HTTP request:'    print '|||%s|||' %request_string    #create a TCP Socket    s = socket.socket()    print "Attempting to connect to %s on port %s" %(address,port)    try:        s.connect((address,port))        print "Connected to %s on port %s" %(address, port)        s.send(request_string)        #we should only need the first 100 bytes or so        rsp = s.recv(100)        print 'Received 100 bytes of HTTP response'        print '!!!%s|||' % rsp    except socket.error, e:        print "Connection to %s on port %s failed: %s " %(address,port,e)        return False    finally:        #be a good citizen and close your connection        print "Closing the connection"        s.close()    lines = rsp.splitlines()    print 'First line of HTTP response: %s' %lines[0]    try:        version, status, message = re.split(r'\s+',lines[0],2)        print 'Version:%s, Status:%s, Message:%s' %(version,status, message)    except:        print 'Failed to split status line'        return False    if status in ['200','301']:        print 'Success -status was %s' %status        return True    else:        print 'Status was %s' % status        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)
输出如下:
hzhida@hzhida-TW9-SW9:~/python$ python httpcheck.py -r /zm/index.phpoptions:{
'resource': '/zm/index.php', 'port': 80, 'address': 'localhost'}, args:[]HTTP request:|||GET /zm/index.php HTTP/1.1Host: localhost|||Attempting to connect to localhost on port 80Connected to localhost on port 80Received 100 bytes of HTTP response!!!HTTP/1.1 200 OKDate: Thu, 16 Aug 2012 17:57:06 GMTServer: Apache/2.2.16 (Ubuntu)X-Powered-By: |||Closing the connectionFirst line of HTTP response: HTTP/1.1 200 OKVersion:HTTP/1.1, Status:200, Message:OKSuccess -status was 200check_webserver returned True

 

转载地址:http://zuybm.baihongyu.com/

你可能感兴趣的文章
详解iOS多图下载的缓存机制
查看>>
关于CAE的那点儿破事儿
查看>>
prometheus + grafana安装部署(centos6.8)
查看>>
排序算法之快速排序
查看>>
日志框架logj的使用
查看>>
架构师必看-架构之美第14章-两个系统的故事:现代软件神话(一)
查看>>
struts2从2.2.3升级到2.3.15.1步骤
查看>>
你所不了解的静态路由特点及配置
查看>>
37、pendingIntent 点击通知栏进入页面
查看>>
TCP为何采用三次握手来建立连接,若采用二次握手可以吗?
查看>>
Jfreet 自动删除生成的图片
查看>>
snmp
查看>>
java笔记----java新建生成用户定义注释
查看>>
批量删除记录时如何实现全选【总结】
查看>>
Thread’s start method and run method
查看>>
使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层...
查看>>
CDN发展史
查看>>
Atitit.研发团队的管理原则---立长不立贤与按资排辈原则
查看>>
UVa 10763 - Foreign Exchange
查看>>
#lspci | grep Eth
查看>>