This article mainly introduces how to implement socket probe and web Service examples in python. If you need it, refer to the following operating system: linux
Software environment: Python 2.7.3
Usage:
The Code is as follows:
$./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 1 s, 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
Code:
The Code is as follows:
#! /Usr/bin/env python
# Encoding: UTF-8
#
# Write by flying snail bait-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 1 s, http default is 5 s" % 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. setdefatimetimeout (time)
Request = urllib2.Request ('HTTP: // % s' % (url ))
Try:
Ret = urllib2.urlopen (request)
Failed t 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. setdefatimetimeout (time)
S = socket. socket (socket. AF_INET, socket. SOCK_STREAM)
Try:
Ret = s. connect (server, int (port )))
Failed t 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 :")
Counter t 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 ()