zoukankan      html  css  js  c++  java
  • python:端口扫描邮件推送

    #!/usr/bin/env python
    import pickle
    import smtplib
    from email.mime.text import MIMEText
    import nmap
    from multiprocessing import Pool
    import time
    import os
    
    now = time.strftime("%Y%m%d")
    os.system('touch /tmp/%s'%now)
    def run(ip):
    	f = open('/tmp/%s'%now,'a')
    	nm = nmap.PortScanner()
    	nm.scan(ip)
    	for proto in nm[ip].all_protocols():
    		ports = nm[ip][proto].keys()
    		ports.sort()
    		port_length = len(ports)
    		i = 0
    		while i < port_length:
    			in_port = ports[i]
    			if nm[ip][proto][in_port]['state'] == 'open':
    				name = nm[ip][proto][in_port]['name']
    				f.write('%s %s-%d open => %s
    ' %(ip,proto,in_port,name))	
    				f.flush()
    			i += 1
    	f.close()
    
    def sendmail():
    	mail_host = 'smtp.intellicredit.cn'
    	mail_user = 'security@intellicredit.cn'
    	mail_pass = 'yourpassword'
    	sender = 'security@intellicredit.cn'
    	receivers = ['zhangshun@intellicredit.cn']
    	context = os.popen('cat /tmp/%s'%now).read()
    	message = MIMEText(context,'plain','utf-8')
    	message['Subject'] = 'boxing-Intranet-port-scan'
    	message['From'] = sender
    	message['To'] = receivers[0]
    	
    	try:
    	        smtpObj = smtplib.SMTP()
    	        smtpObj.connect(mail_host,25)
    	        smtpObj.login(mail_user,mail_pass)
    	        smtpObj.sendmail(sender,receivers,message.as_string())
    	        smtpObj.quit()
    	        print('success')
    	except:
    	        print('failed')
    
    if __name__ == '__main__':
    	iplist = pickle.load(open('/root/host.ini','rb'))
    #	iplist = ['10.0.17.20']
    	for ip in iplist:run(ip)
    	sendmail()
  • 相关阅读:
    脏读、不可重复读、幻读
    数据库一致性
    java 不同时间格式转化
    python-walk遍历目录及查找目录小例子
    python_os模块
    python_time模块
    exec和eval内置函数
    python-filter函数
    python-map函数
    python_内置函数
  • 原文地址:https://www.cnblogs.com/ywxbbbbb/p/10101123.html
Copyright © 2011-2022 走看看