手机
当前位置:查字典教程网 >脚本专栏 >python >python实现探测socket和web服务示例
python实现探测socket和web服务示例
摘要:操作系统:linux软件环境:Python2.7.3用法:复制代码代码如下:$./MonSocket.py#ThisischecktheUR...

操作系统:linux

软件环境:Python 2.7.3

用法:

复制代码 代码如下:

$ ./MonSocket.py

# This is check the URI or Socket of the script #

Usage:

./MonSocket.py -d URL; This is Http protocol

./MonSocket.py -s socket IP or domain; This is Socket protocol

./MonSocket.py -p port; This is Socket port

./MonSocket.py -n ; Total number of requests

./MonSocket.py -c ; Number of concurrent requests

./MonSocket.py -t ; Timeout time(s),socket default is 1s,http default is 5s

For exampale: ./MonSocket.py -d www.weibo.com/index.php -n 200 -c 10 -t 2

For exampale: ./MonSocket.py -s 10.210.214.249 -p 80 -n 200 -c 50 -t 3

代码:

复制代码 代码如下:

#!/usr/bin/env python

# encoding: utf-8

#

# Write by 飞奔的蜗牛-Bob

import os,sys

import getopt,re

import socket,threading,urllib2

def usage():

print '# This is check the URI or Socket of the script #'

print 'Usage:'

print " %s -d URL; This is Http protocol" %sys.argv[0]

print " %s -s socket IP or domain; This is Socket protocol" %sys.argv[0]

print " %s -p port; This is Socket port" %sys.argv[0]

print " %s -n ; Total number of requests" %sys.argv[0]

print " %s -c ; Number of concurrent requests" %sys.argv[0]

print " %s -t ; Timeout time(s),socket default is 1s,http default is 5s" %sys.argv[0]

print "For exampale: %s -d www.weibo.com/index.php -n 200 -c 10 -t 2" %sys.argv[0]

print "For exampale: %s -s 10.210.214.249 -p 80 -n 200 -c 50 -t 3" %sys.argv[0]

def Detect_url(url,sign):

if timeout:

time = int(timeout)

else:

time = 5

urllib2.socket.setdefaulttimeout(time)

request = urllib2.Request('http://%s' %(url))

try:

ret = urllib2.urlopen(request)

except urllib2.URLError,e:

if hasattr(e,"reason"):

port_timeout.append('1')

elif hasattr(e,"code"):

if re.findall('^3d*','%s' %e.code):

port_normal.append('1')

if re.findall('^404d*','%s' %e.code):

port_404.append('1')

if re.findall('^403d*','%s' %e.code):

port_403.append('1')

if re.findall('^500d*','%s' %e.code):

port_500.append('1')

if re.findall('^502d*','%s' %e.code):

port_502.append('1')

if re.findall('^503d*','%s' %e.code):

port_503.append('1')

else:

port_other.append('1')

else:

port_normal.append('1')

def Detect_socket(server,port):

sign = 0

if timeout:

time = int(timeout)

else:

time = 1

socket.setdefaulttimeout(time)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:

ret = s.connect((server, int(port)))

except socket.error, e:

if re.findall('^timed out*','%s' %e):

socket_timeout.append('1')

sign = 1

else:

print '%s' %e

sys.exit(2)

else:

socket_normal.append('1')

sign = 1

if sign == 0:

s.close()

def print_out():

if url_mod:

print 'URL:'

print 'timeout:[%s]' %len(port_timeout)

print 'normal:[%s]' %len(port_normal)

print '33[;31mError_403:[%s]tError_404:[%s]33[0m' %(len(port_403),len(port_404))

print '33[;31mError_500:[%s]tError_502:[%s]tError_503:[%s]33[0m' %(len(port_500),len(port_502),len(port_503))

print '33[;31mError_other:[%s]33[0m' %len(port_other)

if sock_mod:

print 'Socket:'

print 'timeout:[%s]' %len(socket_timeout)

print 'normal:[%s]' %len(socket_normal)

def main():

if sock_mod:

dest_arg1 = sock_mod

dest_arg2 = dport

dest_function = Detect_socket

elif url_mod:

dest_arg1 = url_mod

dest_arg2 = ''

dest_function = Detect_url

else:

sys.exit()

total = int(dcount)

concurrent = int(dconcurrent)

n = 0

sign = 0

lastnu = total%concurrent

while 1:

threads = []

if n + concurrent > total:

nloops = range(n,total)

sign = 1

else:

nloops = range(n,n+concurrent)

for i in nloops:

t = threading.Thread(target=dest_function,args=(dest_arg1,dest_arg2))

threads.append(t)

if sign == 1:

th_nu = lastnu

else:

th_nu = concurrent

for i in range(th_nu):

threads[i].start()

for i in range(th_nu):

threads[i].join()

n = n + concurrent

if sign == 1:

break

print_out()

if __name__=='__main__':

try:

opts,args=getopt.getopt(sys.argv[1:],"hd:s:p:n:c:t:")

except getopt.GetoptError:

usage()

sys.exit(2)

port_timeout = []

port_normal = []

port_403= []

port_404 = []

port_500 = []

port_502 = []

port_503 = []

port_other = []

socket_normal = []

socket_timeout = []

dcount = 0

url_mod = ''

sock_mod = ''

dport = ''

dconcurrent = 0

timeout = 0

if opts:

for opt,arg in opts:

if opt == '-h':

usage()

sys.exit()

if opt == '-d':

url_mod = arg

if opt == '-s':

sock_mod = arg

if opt == '-p':

dport = arg

if opt == '-n':

dcount = arg

if opt == '-c':

dconcurrent = arg

if opt == '-t':

timeout = arg

if url_mod and dcount and dconcurrent:

main()

elif sock_mod and dport and dcount and dconcurrent:

main()

else:

usage()

else:

usage()

sys.exit()

【python实现探测socket和web服务示例】相关文章:

python读写文件操作示例程序

python实现的防DDoS脚本

python抓取网页中的图片示例

python解析文件示例

python实现dict版图遍历示例

python实现socket客户端和服务端简单示例

python基础教程之实现石头剪刀布游戏示例

python实现网页链接提取的方法分享

python list转dict示例分享

python发送邮件接收邮件示例分享

精品推荐
分类导航