This article mainly introduces how to use python to detect the active port of a host and how to check the active host. For more information, see
Monitor the active port of the host
#!/usr/bin/env python# coding-utfimport argparseimport socketimport sys#author: wolf_ribbledef scan_ports(host,start_port,end_port): """Scan remote hosts""" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error,error_msg: print 'Socket creation failed.Error code:' + str(error_msg[]) + 'Erroe message:' + error_msg[] sys.exit() try: remote_ip = socket.gethostbyname(host) except socket.error,error_msg: print error_msg sys.exit() end_port += for port in range(start_port,end_port): try: sock.connect((remote_ip,port)) print 'Port' + str(port) + 'is ipen' sock.close() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error,error_msg: #print error_msg passif __name__ == '__main__': parser = argparse.ArgumentParser(description='remote port scaner') parser.add_argument('--host',action="store",dest="host",default='www.wealink.com') parser.add_argument('--start-port',action="store",dest="start_port",default='',type=int) parser.add_argument('--end-port',action="store",dest="end_port",default='',type=int) given_args = parser.parse_args() host, start_port ,end_start = given_args.host , given_args.start_port,given_args.end_port scan_ports(host,start_port,end_start)
Use python to check active hosts
The device is not very sensitive to the survival status, so it uses the script to detect the survival status. Previously, a shell was used to implement the function of detecting the server survival by using the Ping command, if you are not online, an email will be sent to remind you of non-Online servers and IP addresses. Now you are learning python and have changed the python version. The host to be detected is stored in/scrip/host in the following format:
HOST IP
All right, let's talk about the script:
# Coding = utf-8import subprocessimport OS, time, sys, reimport smtplibfrom email. mime. text import MIMETextfrom email. mime. multipart import MIMEMultipartserver = smtplib. SMTP ('smtp .126.com ') start_Time = time. strftime ('% Y-% m-% d % H: % M: % s', time. localtime (time. time () mj = open ('/scrip/host', 'R') mi = open ('/scrip/text', 'w') mihost = mj. readlines () mj. close () online = [] I = 0for I in range (len (mihost): host = mihost [I] [0: 14]. strip () ip = mihost [I] [14:]. strip () p = subprocess. popen (["ping-c 1-I 0.2-W 3" + ip], stdin = subprocess. PIPE, stdout = subprocess. PIPE, stderr = subprocess. PIPE, shell = True) out = p. stdout. read () regex = re. compile ("time = \ d *", re. IGNORECASE | re. MULTILINE) if len (regex. findall (out)> 0: online. append (host) else: fail_host = host + '\ t' + ip mi. write (fail_host) mi. write ('\ n') mi. close () fail = open ('/scrip/text', 'R') number = fail. readlines () fail_host = ''. join (number) context = 'Scan Time: '+' \ t' * 2 + ''' * 3 + start_Time + '\ n' + 'not Online Devices: '+' \ t' + repr (len (number )) + '\ n' + 'host' + ''' * 12 +' I P' + '\ n' + fail_hostmsg = MIMEMultipart ('alternative ') msg ['subobject'] = 'not Online device' part = MIMEText (context, 'plain ', 'utf-8') msg. attach (part) server = smtplib. SMTP ('smtp .126.com ') server. login ("email user name", "email password") maillist = ['receive mailboxes ',] server. sendmail ("sending email address", maillist, msg. as_string ())
Running result: