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 ...
随机推荐
- python Django 之 Model ORM inspectdb(数据库表反向生成)
在前一篇我们说了,mybatis-generator反向生成代码. 这里我们开始说如何在django中反向生成mysql model代码. 我们在展示django ORM反向生成之前,我们先说一下怎么 ...
- 基于GUI的简单聊天室02
服务器端 与上一篇相比,加进了线程内部类,解决多个客户端连接时,服务器无法全部响应的问题. 利用List集合来装载客户端的对象. 还需要注意全局变量的应用. /** * 相比01,加进了线程内部类,解 ...
- eclipse中使用Maven新建Servlet2.5的Web项目
前言 我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的 ...
- Tomcat启动失败:Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds
问题如下: 解决办法: 再次重启服务器就能解决这个问题.
- C++语言的一些问题
论坛上看到的有人提出的关于C++的一些问题,真是细致(下面还有回复说他对C++一知半解的),一直以为自己的C++还是可以的,可是看了之后真是内牛满面,为什么自己从来没有想的这么深入,差距真的有这么大吗 ...
- Ubuntu:搜狗输入法不能输入中文
搜狗输入法不能输入中文 问题描述 可以打开搜狗输入法,可以打英文,但是不能切换成中文. 其他输入法正常使用(这个可以判断是不是fcitx是不是出现错误). 有一个关于sogou的内部错误提示 解决方法 ...
- [转]数据库更新(Update语句)查询
2011-03-27 10:40:11| 分类: Database |举报|字号 订阅原文出自:http://blog.csdn.net/ylnjust02/archive/2005/12/10/54 ...
- Python API快餐教程(1) - 字符串查找API
字符串处理相关API 字符串是7种序列类型中的一种. 除了序列的操作函数,比如len()来求字符串长度之外,Python还为字符串提供丰富到可以写个编辑器的API. 查找类API 首先,下面的查找AP ...
- URL的应用
1.对于Android来说,开发应用都会去访问服务器地址,那么就要连网,需要通过URL. 先new一个URL来获取路径,然后利用HttpURLConnection来连接并打开url,并通过get 请求 ...
- 状压dp终极篇(状态转移的思想)
状压dp是将每种状态都压缩成用一个二进制串,然后利用位运算进行操作的dp,而凡是dp都需要进行状态转移 对于简单的dp问题只需要一个二维数组dp[ i ][ j ]就能解决 具体操作为首先把状态压缩为 ...