web服务器检测
# coding=utf-8
import sys
import socket
import re def check_webserver(address, port, resource):
address = socket.gethostbyname(address) if not resource.startswith('/'):
resource = '/' + resource request_string = 'GET %s HTTP/1.0\r\n\r\n' % (resource)
print 'HTTP request: |||%s||||' % request_string
s = socket.socket()
failed = False
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)
resp = s.recv(100)
print 'Received 100 bytes of HTTP response'
print '|||%s|||' % resp
except socket.error as e:
print 'Connection to %s on port %s failed: %s' % (address, port, e)
failed = True
finally:
print 'Close the connection'
s.close() if failed:
return False lines = resp.splitlines()
print 'First line of HTTP response: %s' % lines[0]
try:
version, status, message = re.split('\s+', lines[0], 2)
except ValueError:
print 'Failed to split status line'
return False if status in ['', '']:
print 'Success - status was %s' % status
return True
else:
print 'Failure - Status was %s' % status
return False if __name__ == '__main__':
from argparse import ArgumentParser
parser = ArgumentParser(description=u"基于socket的web服务器检测")
parser.add_argument(
'-a',
'--address',
dest="address",
default="localhost",
help="address for the server")
parser.add_argument(
"-p",
"--port",
dest="port",
type=int,
default=80,
help="port for the server")
parser.add_argument(
"-r",
'--resource',
dest='resource',
default="index.html",
help="resouce to check")
args = parser.parse_args()
check = check_webserver(args.address, args.port, args.resource)
print 'check_webserver returned: %s' % check
sys.exit(not check)
使用httplib
def check_webserver_by_httplib(address, port, resource):
address = socket.gethostbyname(address)
failed = False
if not resource.startswith('/'):
resource = '/' + resource
try:
conn = httplib.HTTPConnection(address, port)
print 'HTTP connection created successfully'
# make request
conn.request('GET', resource)
print 'request for %s successful' % (resource)
# get response
resp = conn.getresponse()
print 'response status: %s' % resp.status
except socket.error as e:
print 'HTTP connection failed: %s' % e
return False
finally:
conn.close()
print 'HTTP connection closed successfully' if resp.status in [200, 301]:
return True
else:
return False
web服务器检测的更多相关文章
- Web Service 其他服务器检测不到查询测试按钮
1.Web Service 其他服务器检测不到查询测试按钮,config需要修改地方: <system.web> <webServices> <protocols> ...
- 前端学HTTP之WEB服务器
前面的话 Web服务器每天会分发出数以亿计的Web页面,它是万维网的骨干.本文主要介绍WEB服务器的相关内容 总括 Web服务器会对HTTP请求进行处理并提供响应.术语“Web服务器”可以用来表示We ...
- 关于Web服务器的认识
马上就要毕业了,也要开始找工作了,大学写了这么多代码了,却没有好好总结一下常用的概念很是遗憾额,就通过这篇博客记录一下我最常用的一些知识好了. 说到Web服务器,有很多文章都介绍的很好,之前看到一篇非 ...
- 多Web服务器之间共享Session的解决方案
一.提出问题: 为了满足足够大的应用,满足更多的客户,于是我们架设了N台Web服务器(N>=2),在多台Web服务器的情况下,我们会涉及到一个问题:用户登陆一台服务器以后,如果在跨越到另一台服务 ...
- Web服务器的工作原理
Web服务器的工作原理 Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了 ...
- Jexus V5.8.0正式发布:跨平台的ASP.NET WEB服务器
Jexus Web Server V5.8.0 已于今日(12月10日)正式发布,下载地址:http://www.linuxdot.net/. Jexus v5.8.0有如下的更新: 1,为反向代理增 ...
- ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上
一.前言 大家都知道,在之前,我们Asp.net 的网站都只能部署在IIS上,并且IIS也只存在于Windows上,这样Asp.net开发的网站就难以做到跨平台.由于微软的各项技术的开源,所以微软自然 ...
- web服务器工作原理
Web服务器工作原理概述 转载自http://www.importnew.com/15020.html 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它 ...
- Web服务器Nginx多方位优化策略
标签:性能 Web 架构 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dongsong.blog.51cto.co ...
随机推荐
- hdu4333
题解: EX_KMP 先把串复制一遍放到后面 这样旋转就是每一个前缀了 然后做一个EX_KMP 然后看一下后一个字符谁大谁小 代码: #include<cstdio> #include&l ...
- DBGridEh 在粘贴中文时出现乱码和错位 100zhx_888]
http://www.fx114.net/qa-29-3439.aspx 回复于: -- :: unit DBGridEh; 把下面这个函数替换成这样 procedure TDBGridInplace ...
- Linux:man命令显示颜色
man命令显示颜色 在.bashrc下添加 export LESS_TERMCAP_mb=$'\E[01;31m' export LESS_TERMCAP_md=$'\E[01;31m' export ...
- input 文件上传
<button class="blueButton fileinput-button" style="width:165px;" @click=" ...
- L2-009. 抢红包
没有人没抢过红包吧…… 这里给出N个人之间互相发红包.抢红包的记录,请你统计一下他们抢红包的收获. 输入格式: 输入第一行给出一个正整数N(<= 104),即参与发红包和抢红包的总人数,则这些人 ...
- sql,去重
distinct SELECT distinct nf FROM BSHGJJK.T_JJ_NY_QSNCJBQK order by nf desc 来自为知笔记(Wiz)
- caffe安装编译问题-ImportError: No module named skimage.io
问题描述 >>> import caffe Traceback (most recent call last): File , in <module> File , in ...
- 批量分割视频opencv
前言 视频处理过程中,会用到对等长的视频进行处理,此时要对大视频进行分割. 实现步骤 1.批量读取视频集: 2.视频分割: 测试代码 1.批量读取视频集: /********************* ...
- explain结果字段说明
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...
- 20155310 2016-2017-2 《Java程序设计》第八周学习总结
20155310 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章 通用API 通用API •日志:日志对信息安全意义重大,审计.取证.入侵检验等都会 ...