基于socket的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 [‘200‘, ‘301‘]:
        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)
时间: 2024-08-07 22:57:59

基于socket的web服务器检测的相关文章

TCP/IP协议学习(五) 基于C# Socket的Web服务器---动态通讯实现

目录 (1).基于Ajax的前端实现 (2).Web服务器后端处理 一个完整的web服务器,不仅需要满足用户端对于图片.文档等资源的需求:还能够对于用户端的动态请求,返回指定程序生成的数据.支持动态请求处理是web服务器的必要组成部分,现有比较成熟的前端动态技术有CGI,ASP/ASP.net, PHP,原生javascript实现的Ajax技术以及基于HTML5的webSocket通讯,它们每一项都涉及很多相关知识,不过归结到核心都是前后端的数据交互,特别是对于后端来说并没有太大区别.作为动态

基于Socket创建Web服务

基于Socket创建Web服务 为什么要使用Socket呢,我们来看下图 Socket原理图回顾: -------------------编写SocketService,完成字母小写转大写功能----------------------------- ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp socket服务,必须监听一个端口 ServerSo

基于TcpListerer的web服务器 和 基于HttpListerer的web服务器

摘自<Asp.Net 本质论>作者:郝冠军 /*为了简化基于TCP协议的监听程序,.NET在System.Net.Sockets命名空间中提供了TcpListerer类,使用它,在构造函数中传递一组网络端点信息就可以准备好监听参数,而不再需要设置使用的网络协议等细节,调用Start方法之后,监听工作开始.AcceptTcpClient方法将阻塞进程,知道一个客户端的连接到达监听器,这个方法将返回一个代表客户端连接的代理对象*/ 1 class TcpListener_Study 2 { 3 p

基于HttpListener的web服务器

写在前面 前面两篇文章分别介绍了基于原始socket的web服务器和基于tcpListener的web服务器,本篇文章将继续介绍另外一种基于HttpListener的. HttpListener HttpListener进一步的简化了Http协议的监听,仅需通过字符串的方法提供监听的地址和端口号以及虚拟路径,就可以开始监听工作了. using System; using System.Collections.Generic; using System.Linq; using System.Net

linux学习笔记——搭建基于nginx的web服务器、多核配置、nginx配置参数

############ 认识nginx #############Nginx:(发音同 engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用.  其优点是轻量级(占有内存少),高并发(并发能力强),事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用ngi

基于linux的web服务器的iptables防火墙安全优化设置

安全规划:开启 80  22 端口并 打开回路(回环地址 127.0.0.1) #iptables –P INPUT ACCEPT #iptables –P OUTPUT ACCEPT #iptables –P FORWARD ACCEPT 以上几步操作是为了在清除所有规则之前,通过所有请求,如果远程操作的话,防止远程链接断开. 接下来清除服务器内置规则和用户自定义规则: #iptables –F #iptables -X 打开ssh端口,用于远程链接用: #iptables –A INPUT

Java 并发专题 : Executor详细介绍 打造基于Executor的Web服务器

适配器模式,将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景:系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配.适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况. 代码实现: //Adapter.h #include "stdafx.h" #include <iostream> class Adaptee

SPWebServer:一个基于 SPServer 的 web 服务器框架

SPWebServer:一个基于 SPServer 的 web 服务器框架 博客分类: OpenSource项目 应用服务器框架Web网络应用多线程 看到这个题目,估计很多人会问:为什么要再实现一个 web 服务器? 这里有几个原因: 1.这是一个 web 服务器框架,不是一个完整的 web 服务器.也就是说 SPWebServer 提供的是一套 API 和类库,可以方便地集成到现有的应用程序中.可以称 SPWebServer 为 embedded web server . 2.有些时候,我们需

详谈socket请求Web服务器过程(转)

最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生. 而有人或许会问:众所周知,HTTP协议有两大特性,一个是“无连接”性,一个是“无状态”性.这里的“无连接”岂不是跟上面的说法有冲突?其实这里并没有矛盾,只是人们对“连接”这个词的理解有差异.首先我们来看一下浏览器向Web服务器发出Http请求以及Web服务器给浏览器回复的过程: 1)浏览器创建Socket,按给定I