监测主机存活的端口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#!/usr/bin/env python
# coding-utf
import argparse
import socket
import sys
#author: wolf_ribble
def 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
pass
if __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)
|
使用python 检查存活主机
这里的设备对存活状态不是很敏感,就使用了脚本来检测存活状态,之前用shell做了一个,实现的功能是使用Ping命令检测服务器存活,不在线会将不在线的服务器及IP通过邮件发送提醒,现在在学习python,改了一个python版本。需要检测的主机我存储在/scrip/host中,格式为:
HOST IP
好了,废话少说,上脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#coding=utf-8
import subprocess
import os,time,sys,re
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
server = 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 = 0
for 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' + '\n' + 'HOST' + ' ' * 12 + 'I P' + '\n' + fail_host
msg = MIMEMultipart( 'alternative' )
msg[ 'Subject' ] = 'Not Online Device'
part = MIMEText(context, 'plain' , 'utf-8' )
msg.attach(part)
server = smtplib.SMTP( 'smtp.126.com' )
server.login( "邮箱用户名" , "邮箱密码" )
maillist = [ '接收邮箱' ,]
server.sendmail( "发送邮箱地址" ,maillist,msg.as_string())
|