源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python实现探测socket和web服务示例

  • 时间:2022-09-08 04:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python实现探测socket和web服务示例
操作系统:linux 软件环境:Python 2.7.3 用法:
[u]复制代码[/u] 代码如下:
$ ./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
代码:
[u]复制代码[/u] 代码如下:
#!/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('^3\d*','%s' %e.code):     port_normal.append('1')    if re.findall('^404\d*','%s' %e.code):     port_404.append('1')                         if re.findall('^403\d*','%s' %e.code):                                 port_403.append('1')                         if re.findall('^500\d*','%s' %e.code):                                 port_500.append('1')    if re.findall('^502\d*','%s' %e.code):     port_502.append('1')                         if re.findall('^503\d*','%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 '\033[;31mError_403:[%s]\tError_404:[%s]\033[0m' %(len(port_403),len(port_404))          print '\033[;31mError_500:[%s]\tError_502:[%s]\tError_503:[%s]\033[0m' %(len(port_500),len(port_502),len(port_503))   print '\033[;31mError_other:[%s]\033[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()
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部