python实现批量探测IP存活性并发送邮件告警

合集下载

使用Python检测局域网内IP地址使用情况(批量ping工具)

使用Python检测局域网内IP地址使用情况(批量ping工具)

使⽤Python检测局域⽹内IP地址使⽤情况(批量ping⼯具)在测试环境搭建的过程中,经常需要给服务器分配静态IP地址,由于不清楚当前局域⽹内部哪些IP地址是空闲的,所以经常需要⼀个⼀个的去试,才能找到⼀个可⽤的IP。

在之前的⼀家公司⼯作的时候,⽤到过⼀个检测IP使⽤情况的⼯具,但是属于内部⼯具,⽆法获取到。

于是乎便想,何不⾃⼰开发⼀个呢? 说做便做,开发环境使⽤的是Python3.6+PyQt5. 如果你的环境不⼀样,可能会运⾏失败。

1、界⾯设计 界⾯⽤QtDesigner来画的,先来⼀张原型图如下,每次只能测试⼀个⽹段的IP占⽤情况,0-255个⼩窗格⽤来显⽰IP地址的使⽤情况,默认为灰⾊,程序执⾏后,IP地址已使⽤的显⽰绿⾊,IP地址未被使⽤的显⽰红⾊。

做界⾯的时候,255个⼩窗格画起来实在是要⼈命,于是就仅画出了窗⼝框架,将UI⽂件转成Python源码后,⾃⼰⼿动编写代码来实现255窗格布局。

代码⽚段如下: self.gridlayout = QtWidgets.QGridLayout(self.widget1)self.gridlayout.setContentsMargins(0, 0, 0, 0)self.gridlayout.setObjectName("gridlayout")self.gridlayout.setSpacing(7)bel_list = []list_index = 0for i in range(1, 17):for j in range(1, 17):label = QtWidgets.QLabel(self.widget1)label.setMinimumSize(QtCore.QSize(32, 15))label.setStyleSheet("")label.setAlignment(QtCore.Qt.AlignCenter)label.setText(QtCore.QCoreApplication.translate("MyPing", str(list_index)))bel_list.append(label)self.gridlayout.addWidget(label, i-1, j-1, 1, 1)list_index += 1 2、ping功能实现 ping的实现⽅法有多种,最常⽤的当然是通过调⽤系统⾃带的ping功能来实现。

python实现批量探测IP存活性并发送邮件告警

python实现批量探测IP存活性并发送邮件告警

python实现批量探测IP存活性并发送邮件告警在Python中,我们可以使用`ping`命令来检测IP地址的存活性,然后通过SMTP协议发送邮件进行告警。

以下是实现这一功能的步骤:1.导入所需的模块:```pythonimport subprocessimport smtplibfrom email.mime.text import MIMEText```2.定义一个函数,用于发送邮件:```pythondef send_email(subject, body, sender, receiver, smtp_server, smtp_port, username, password):msg = MIMEText(body)msg['Subject'] = subjectmsg['From'] = sendermsg['To'] = receivertry:server = smtplib.SMTP(smtp_server, smtp_port)server.starttlsserver.login(username, password)server.sendmail(sender, [receiver], msg.as_string() server.quitprint("邮件发送成功!")except Exception as e:print("发送邮件失败:", e)```3.定义一个函数,用于检测IP地址的存活性:```pythondef check_ip(ip):result = subprocess.run(['ping', '-c', '1', ip], capture_output=True)if result.returncode == 0:return Trueelse:return False```4.主程序逻辑:```pythonif __name__ == '__main__':ips = ['192.168.0.1', '192.168.0.2', '192.168.0.3'] # 要检测的IP地址列表smtp_port = 25 # SMTP服务器端口subject = 'IP存活性检测结果' # 邮件主题alive_ips = [] # 存活的IP地址列表for ip in ips:if check_ip(ip):alive_ips.append(ip)if len(alive_ips) > 0:#构造邮件正文body = '以下IP地址存活:\n'for ip in alive_ips:body += ip + '\n'#发送邮件send_email(subject, body, sender, receiver, smtp_server, smtp_port, username, password)else:print('所有IP地址都不存活!')```在以上代码中,我们首先定义了一个`check_ip`函数,用于检测IP 地址的存活性。

Python网络安全监控与报警系统搭建

Python网络安全监控与报警系统搭建

Python网络安全监控与报警系统搭建随着互联网的发展和普及,网络安全问题日益凸显。

为了确保网络的安全性,网络监控与报警系统变得非常必要。

Python作为一门功能强大且易于使用的编程语言,可以帮助我们构建高效的网络安全监控与报警系统。

本文将介绍如何使用Python搭建网络安全监控与报警系统。

一、系统设计与架构在开始搭建网络安全监控与报警系统之前,我们需要进行系统设计与架构的规划。

一个完整的网络安全监控与报警系统应该包含以下几个关键组件:1. 数据采集模块:用于采集网络中的安全事件和数据,包括入侵记录、异常流量、漏洞扫描结果等。

2. 数据存储模块:将采集到的安全事件和数据存储到数据库中,以便后续的数据分析和查询。

3. 数据分析模块:对采集到的安全事件和数据进行分析,发现异常行为和潜在威胁。

4. 报警模块:检测到异常行为后,及时发送报警信息给相关责任人。

5. 用户界面:提供一个友好的用户界面,方便管理员查看系统状态、报警信息和配置系统参数等。

基于以上的系统设计,我们可以开始具体实现网络安全监控与报警系统的搭建。

二、数据采集和存储数据采集和存储是网络安全监控与报警系统的重要组成部分。

我们可以使用Python编写脚本来实现数据的采集和存储功能。

首先,我们可以利用Python的socket库来监听网络流量。

通过监听网络流量,我们可以实时获取网络中的数据包,并进行相应的处理和分析。

其次,我们可以使用Python的第三方库,如Scapy或Pynids,来进行数据包解析和分析。

这些库提供了丰富的功能,可以帮助我们获取数据包的各种信息,例如源IP地址、目标IP地址、协议类型等。

将采集到的数据存储到数据库中是非常重要的。

我们可以使用Python的数据库模块,如MySQLdb或psycopg2,连接到数据库,并将数据插入到相应的表中。

三、数据分析与异常检测数据分析是网络安全监控与报警系统的核心功能之一。

借助于Python强大的数据分析库,我们可以对采集到的数据进行有效的分析和异常检测。

Python邮件模块实现邮件发送接收

Python邮件模块实现邮件发送接收

Python邮件模块实现邮件发送接收一、引言在当今信息化社会,电子邮件已经成为人们日常生活和工作中不可或缺的一部分。

Python作为一种功能强大的编程语言,提供了多种邮件模块,可以方便地实现邮件的发送和接收。

本文将介绍如何使用Python的邮件模块来实现邮件的发送和接收功能。

二、准备工作在开始之前,我们需要确保已经安装了Python的smtplib、imaplib和email等相关模块。

如果没有安装,可以通过pip来进行安装:示例代码star:编程语言:pythonpip install secure-smtplibpip install imapclientpip install pyzmail36示例代码end三、使用smtplib发送邮件1. 导入相关模块首先,我们需要导入smtplib和email相关模块:示例代码star:编程语言:pythonimport smtplibfrom email.mime.text import MIMETextfrom email.header import Header示例代码end2. 连接到SMTP服务器接下来,我们需要连接到SMTP服务器,并登录邮箱账号:示例代码star:编程语言:pythonsmtp_server = ''smtp_port = 587server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()server.login('对应邮箱', 'your_password')示例代码end3. 构造邮件内容然后,我们需要构造邮件内容,并设置发件人、收件人和主题:示例代码star:编程语言:pythonmessage = MIMEText('这是一封使用Python发送的测试邮件','plain', 'utf-8')message['From'] = Header('发件人姓名', 'utf-8')message['To'] = Header('收件人姓名', 'utf-8')message['Subject'] = Header('测试邮件', 'utf-8')示例代码end4. 发送邮件最后,我们可以通过sendmail方法来发送邮件:示例代码star:编程语言:pythonserver.sendmail('对应邮箱', ['对应邮箱'],message.as_string())示例代码end四、使用imaplib接收邮件1. 导入相关模块首先,我们需要导入imaplib和email相关模块:示例代码star:import imaplibimport emailfrom email.header import decode_header示例代码end2. 连接到IMAP服务器接下来,我们需要连接到IMAP服务器,并登录邮箱账号:示例代码star:编程语言:pythonimap_server = ''imap_port = 993mail = imaplib.IMAP4_SSL(imap_server, imap_port)mail.login('对应邮箱', 'your_password')mail.select('INBOX')示例代码end3. 获取未读邮件列表然后,我们可以通过search方法获取未读邮件的UID列表:示例代码star:result, data = mail.search(None, 'UNSEEN')unread_uids = data[0].split()示例代码end4. 获取未读邮件内容最后,我们可以通过fetch方法获取未读邮件的内容并进行解析:示例代码star:编程语言:pythonfor uid in unread_uids:result, message_data = mail.fetch(uid, '(RFC822)')raw_email = message_data[0][1]msg = email.message_from_bytes(raw_email)subject =decode_header(msg['Subject'])[0][0].decode()from_ = decode_header(msg['From'])[0][0].decode()print(f'From: {from_}')print(f'Subject: {subject}')示例代码end五、总结通过本文的介绍,我们学习了如何使用Python的smtplib和imaplib模块来实现邮件的发送和接收功能。

详解Python判定IP地址合法性的三种方法

详解Python判定IP地址合法性的三种方法

详解Python判定IP地址合法性的三种⽅法IP合法性校验是开发中⾮常常⽤的,看起来很简单的判断,作⽤确很⼤,写起来⽐较容易出错,今天我们来总结⼀下,看⼀下3种常⽤的IP地址合法性校验的⽅法。

IPv4的ip地址格式:(1~255).(0~255).(0~255).(0~255)⽅法1:正则表达式判定法最简单的实现⽅法是构造⼀个正则表达式。

判断⽤户的输⼊与正则表达式是否匹配。

若匹配则是正确的IP地址,否则不是正确的IP地址。

复制代码代码如下:^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$下⾯给出相对应的验证ip的正则表达式:\d表⽰0~9的任何⼀个数字{2}表⽰正好出现两次[0-4]表⽰0~4的任何⼀个数字| 的意思是或者1\d{2}的意思就是100~199之间的任意⼀个数字2[0-4]\d的意思是200~249之间的任意⼀个数字25[0-5]的意思是250~255之间的任意⼀个数字[1-9]\d的意思是10~99之间的任意⼀个数字[1-9])的意思是1~9之间的任意⼀个数字\.的意思是.点要转义(特殊字符类似,@都要加\\转义)代码如下:import redef check_ip(ipAddr):compile_ip=pile('^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$') if compile_ip.match(ipAddr):return Trueelse:return False⽅法2:字符串拆解法把ip地址当作字符串,以.为分隔符分割,进⾏判断代码:#!/usr/bin/pythonimport os,sysdef check_ip(ipAddr):import sysaddr=ipAddr.strip().split('.') #切割IP地址为⼀个列表#print addrif len(addr) != 4: #切割后列表必须有4个参数print "check ip address failed!"sys.exit()for i in range(4):try:addr[i]=int(addr[i]) #每个参数必须为数字,否则校验失败except:print "check ip address failed!"sys.exit()if addr[i]<=255 and addr[i]>=0: #每个参数值必须在0-255之间passelse:print "check ip address failed!"sys.exit()i+=1else:print "check ip address success!"if len(sys.argv)!=2: #传参加本⾝长度必须为2print "Example: %s 10.0.0.1 "%sys.argv[0]sys.exit()else:check_ip(sys.argv[1]) #满⾜条件调⽤校验IP函数⽅法3:引⼊IPy类库IPy库是⼀个处理IP⽐较强⼤的第三⽅库IPy库的安装请⾃⾏查找。

Zabbix利用Python3发送微信报警

Zabbix利用Python3发送微信报警

效果图预览:
转载请注明原文链接: /caiyuanbo/blog/501334
由于时间关系暂不添加描述,如果有问题可以跟我一起研究。
QQ : 384152164
E-mail : 384152164@
Байду номын сангаас
msg = response.read() print("returned value : " + str(msg)) except: print("returned value : " + str(msg)) default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) user = str(sys.argv[1]) title = str(sys.argv[2]) content = str(sys.argv[3]) corpid = '微信公众平台管理组的 ID' corpsecret = '微信公众平台管理组的凭证密钥' accesstoken = gettoken(corpid,corpsecret) senddata(accesstoken,user,content)
+
corp_id
+
def senddata(access_token,user,content): try: send_url = 'https:///cgi-bin/message/send?access_token=' + access_token send_values = { "touser":user, "msgtype":"text", "agentid":"4", "text":{ "content":content }, "safe":"0" } send_data = json.dumps(send_values, ensure_ascii=False).encode(encoding='UTF8') send_request = urllib.request.Request(send_url, send_data) response = urllib.request.urlopen(send_request)

告警抑制输出真实产生的告警列表python

告警抑制输出真实产生的告警列表python

告警抑制输出真实产生的告警列表python摘要:1.引言2.告警抑制的概念3.产生告警列表的Python 方法4.实际应用场景5.总结正文:告警抑制在许多领域都是一个重要的问题,特别是在工业自动化和计算机网络管理中。

告警列表是记录系统中发生告警事件的一种方式,这对于故障排查和系统优化至关重要。

在Python 中,我们可以通过编写代码来产生告警列表,这对于自动化测试和模拟系统行为非常有用。

告警抑制是指在系统检测到异常情况时,自动抑制或过滤掉不需要的告警信息,以避免告警风暴,从而提高系统的可靠性和稳定性。

告警抑制算法有很多种,如基于规则的告警抑制、基于概率的告警抑制和基于机器学习的告警抑制等。

在Python 中,我们可以使用以下步骤来产生告警列表:1.导入所需的库:如os、sys、time 等。

2.定义一个函数来模拟告警产生过程,这可以基于随机数、系统日志或其他数据源。

3.定义一个函数来根据告警抑制算法过滤告警。

4.调用告警产生函数,并记录产生的告警列表。

5.对告警列表进行处理,如保存到文件、发送到远程服务器等。

在实际应用场景中,告警列表可以用于多种目的,如:1.故障排查:当系统出现问题时,可以通过查看告警列表来确定可能的原因。

2.性能优化:通过分析告警列表,可以发现系统的瓶颈和潜在的性能问题。

3.安全审计:告警列表可以记录系统的安全事件,如未经授权的访问、恶意软件感染等。

4.告警监控:可以实时监控告警列表,以便及时发现并处理异常情况。

总之,Python 提供了丰富的库和工具来模拟和处理告警列表,这对于研究和开发告警抑制算法非常有用。

Python网络安全事件预警

Python网络安全事件预警

Python网络安全事件预警随着网络的发展和普及,网络安全问题日益成为人们关注的焦点。

在这个高度信息化的时代,网络安全事件对个人、企业和国家的影响都不容忽视。

为保护网络安全,预先警示潜在威胁变得尤为重要。

本文将从Python技术的角度,介绍一些常见的网络安全事件和如何利用Python进行预警。

一、网络钓鱼攻击网络钓鱼攻击是一种通过伪装成合法机构或个人来诱使用户泄露个人敏感信息的方式。

常见的网络钓鱼手段包括欺骗性电子邮件、仿冒网站等。

为了预警此类攻击,我们可以使用Python编写程序来分析电子邮件或网址的信息,检测是否存在钓鱼的风险。

通过利用Python的正则表达式和网络请求库,我们可以提取关键信息,并与已知的钓鱼特征进行匹配和比对。

二、恶意软件攻击恶意软件是指以破坏、远程控制、窃取信息等为目的而编写的恶意程序。

常见的恶意软件包括病毒、木马、间谍软件等。

为了避免受到恶意软件的攻击,我们可以利用Python编写监测程序,定期扫描系统中的文件和进程,以便及时发现和清除潜在的威胁。

Python的文件和进程操作库提供了丰富的功能,可以帮助我们实现这一目标。

三、网络入侵检测网络入侵是指未经许可的人员或程序通过网络渗透到系统中,窃取、篡改或破坏数据的行为。

为了防范网络入侵,我们可以使用Python编写入侵检测系统。

该系统可以监测网络流量,分析异常访问行为,并及时发出警报。

Python的网络编程库和数据分析库提供了强大的工具,可以帮助我们实现对网络流量的监测和分析。

四、漏洞扫描漏洞是系统或应用程序中存在的安全问题,黑客可以利用这些漏洞来进行攻击。

为了及时发现系统中的漏洞,我们可以使用Python编写自动化扫描工具。

该工具可以对系统进行全面扫描,检测潜在的漏洞,并生成详细的报告。

Python的网络编程库和漏洞扫描框架可以帮助我们快速开发这样的工具。

五、数据泄露监控数据泄露是指将机密信息非法地披露或泄露给未经授权的个人或组织。

[服务器]脚本:批处理带参数ping命令发送邮件脚本

[服务器]脚本:批处理带参数ping命令发送邮件脚本

[服务器]脚本:批处理带参数ping命令发送邮件脚本1、批处理带参数ping命令@echo offecho Input you IP address ......set /p IP=echo Your IP number is %IP%.ping %IP%set IP=pause2、发送告警脚本For counter = 1 To 3 Step 1SendMailNextPublic Sub SendMailNameSpace = "/cdo/configuration/"Set Email = CreateObject("CDO.Message")Email.From = "Server" '发件⼈名称Email.To = "test@" '收件⼈邮件地址Email.Subject = GetIP&" 温度告警!" '邮件主题MsgBox(email.subject) 调试⽤Email.Textbody="Test" '邮件内容With Email.Configuration.Fields.Item(NameSpace&"sendusing") = 2.Item(NameSpace&"smtpserver") = "" 'SMTP服务器地址.Item(NameSpace&"smtpserverport") = 25 'SMTP服务器端⼝.Item(NameSpace&"smtpauthenticate") = 1 'SMTP⾝份验证.Item(NameSpace&"sendusername") = "test" '发件帐号.Item(NameSpace&"sendpassword") = "test" '发件密码.UpdateEnd WithEmail.SendEnd SubPublic Function GetIPComputerName="."Dim objWMIService,colItems,objItem,objAddressSet objWMIService = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2")Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each objItem in colItemsFor Each objAddress in objItem.IPAddressIf objAddress <> "" thenGetIP = objAddressExit FunctionEnd IfNextNextEnd Function。

python使用scapy模块实现ping扫描的过程详解

python使用scapy模块实现ping扫描的过程详解

python使⽤scapy模块实现ping扫描的过程详解关于scapyScapy 是⼀个可以让⽤户发送、侦听和解析并伪装⽹络报⽂的Python程序。

这些功能可以⽤于制作侦测、扫描和攻击⽹络的⼯具。

换⾔之, Scapy 是⼀个强⼤的操纵报⽂的交互程序。

它可以伪造或者解析多种协议的报⽂,还具有发送、捕获、匹配请求和响应这些报⽂以及更多的功能。

Scapy 可以轻松地做到像扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现⽹络(network discorvery)这样的传统任务。

它可以代替 hping , arpspoof , arp-sk , arping , p0f 甚⾄是部分的 Namp , tcpdump 和 tshark 的功能对于我来⾔,我认为scapy最强⼤的特点就是scapy解码不解释,⽐如我们在⽤nmap进⾏扫描的时候,结果往往是nmap已经根据返回包的特征,然后输出⾃⼰推测的结果,但是scapy是直接输出返回包的内容,这样我们可以判断的更加准确实现过程接下来我将详细的介绍如何使⽤scapy模块编写⼀个简单的内⽹扫描⼯具。

我先说⼀下我的脚本整个⼤致流程:1.⾸先我们应该编写出能够像单个IP发送ICMP包并接受回包的代码2.其次我们应该开启多进程,从⽽让该脚本可以快速扫描整个⽹段的主机存活情况那么我们接下来就开始上⾯的流程。

单进程发包⾸先我们需要导⼊scapy模块,这⾥要强调⼀下,scapy的v2版本的导⼊与别的模块导⼊⽅式不同,需要特殊的书写⽅式,否则scapy模块中的某些功能将⽆法使⽤from scapy.all import *from random import randint接下来需要构造我们的包,即我们要发送的ICMP包,⾸先了解⼀下scapy包的伪造对于scapy我们可以直接输⼊scapy进⼊⼀个交互模式,其实这个交互模式本质也还是python,我们来看⼀下包读者可以看看我构造的这个包,我写了三个协议层,第⼀写其实是mac地址,如果我们只输⼊Ether,那么就是默认的结果,这⾥的mac就是默认⼴播形式,第⼆个我写的是IP,也就是IP层的设置,可以发现其中的⼀些已经填写了默认值,我们要设置的其实主要就的dst,即⽬的地址,当然其他的想改⼀下也是可以的,⽐如说把ttl⽣存周期改成128,这也是没⽑病的,第三个我写的是TCP,即我发送的包是TCP包,其中也有⼀些默认值,我们看到有个window,这个其实就是程序的进程号。

Python网络爬虫的数据监控与报警机制

Python网络爬虫的数据监控与报警机制

Python网络爬虫的数据监控与报警机制在当今信息爆炸的时代,网络数据的获取和分析对于各行各业都具有重要意义。

而Python作为一种强大的编程语言,其网络爬虫功能被广泛应用。

然而,随着网络爬虫的使用越来越多,数据监控和报警机制也变得尤为重要。

本文将介绍Python网络爬虫的数据监控与报警机制,帮助读者更好地应对爬虫运行过程中的异常情况。

一、数据监控1. 异常数据检测在数据爬取过程中,我们需要对爬取到的数据进行异常数据检测。

通过设定阈值或规则,判断数据是否符合预期。

例如,我们可以通过设定期望值的范围,检查数据是否超出范围,以此判断是否存在异常情况。

2. 数据完整性检测另一个重要的数据监控内容是数据的完整性检测。

爬取到的数据应当包含所有必要的字段,并且字段值不应为空。

我们可以编写代码来检查每个字段的完整性,并且在数据缺失或异常时给出相应的报警。

3. 数据更新监控对于需要定期更新的数据,我们需要进行数据更新监控。

通过比对前后两次爬取的数据,判断数据是否有更新。

我们可以比对数据的时间戳或其他特征来判断数据是否有新的更新。

二、报警机制1. 邮件报警在Python中,我们可以使用smtplib库来发送邮件。

可以通过编写代码,在监测到异常情况时自动发送邮件给相关人员。

邮件通知可以包含清晰的错误信息和相应的处理建议,方便及时处理异常情况。

2. 短信报警除了邮件报警外,我们还可以使用短信报警来提醒相关人员。

通过调用第三方短信服务商的API,我们可以实现在异常情况发生时发送短信通知。

短信通知的优势在于及时性和高度关注度。

3. 实时监控面板为了方便对爬虫的监控和报警情况进行查看,我们可以设计一个实时监控面板。

通过Python的Web开发框架,如Flask或Django,我们可以创建一个动态的监控面板,实时展示数据的监控情况和报警信息。

三、实践建议1. 使用日志记录异常在编写爬虫代码时,建议使用日志记录异常情况。

通过配置日志级别和格式,我们可以获得详细的异常信息,方便后续的分析和处理。

python写监控并发警报邮件

python写监控并发警报邮件

python写监控并发警报邮件调⽤第三⽅模块:⽤pip软件下载:模块:psutil:它能够轻松实现获取系统运⾏的进程和系统利⽤率(包括CPU、内存、磁盘、⽹络等)信息。

它主要⽤来做系统监控,性能分析,进程管理。

import psutilpsutil.cpu_count() #查看cpu逻辑核数:打开超线程之后psutil.cpu_count(False) #查看cpu物理核数psutil.cpu_percent(1) #⼀秒钟内cpu的使⽤率psutil.cpu_percent(1,True) #每⼀核cpu的占⽤率psutil.virtual_memory() #内存使⽤率print('%.2f%%' % res[2]) #给使⽤率保留两位⼩数点并加上%。

psutil.disk_usage('C:') #查看硬盘分区使⽤率_io_counters() #查看⽹络流量*浮点类型也可以⽐较⼤⼩,zifu串转换成int类型要先转换成浮点类型在转换。

str —> float —> int写监控cpu脚本:#监控:import psutilimport smtplibfrom email.mime.text import MIMETextfrom email.header import Header#监控cpu使⽤率:def cpu_info():cpu = psutil.cpu_percent(1)cpua = '%.2f%%' % cpureturn cpua#监控内存使⽤率:def mem_info():mem = psutil.virtual_memory()mema = '%.2f%%' % mem[2]return mema#监控硬盘使⽤率:def disk_info():cd = psutil.disk_usage('C:')cdisk = '%.2f%%' % cd[3]dd = psutil.disk_usage('D:')ddisk = '%.2f%%' % dd[3]ed = psutil.disk_usage('E:')edisk = '%.2f%%' % ed[3]all = [cdisk,ddisk,edisk]return all#监控⽹络流量:def net_info():net = _io_counters()send = str(int(net[0]/8/1024/1024)) + 'M'recv = str(int(net[1]/8/1024/1024)) + 'M'all1 = [send,recv]return all1def mail(str):sender = 'xxxx@'receiver = 'xxx@'subject = '报警'username = 'xxx@'password = 'xxxx'msg = MIMEText(str,'plain', 'utf-8')msg['Subject'] = Header(subject, 'utf-8')msg['From'] = 'Tim<xxx@>'msg['To'] = "xxx@"smtp = smtplib.SMTP()smtp.connect('')smtp.login(username, password)smtp.sendmail(sender, receiver, msg.as_string())smtp.quit()def main():a = cpu_info()b = mem_info()cd = disk_info()[0]dd = disk_info()[1]ed = disk_info()[2]ds = net_info()[0]dr = net_info()[1]all3 = '''=====================你的cpu使⽤率为:%s =====================你的内存使⽤率为:%s =====================你的C盘使⽤率为:%s 你的D盘使⽤率为:%s 你的E盘使⽤率为:%s =====================您的network_send:%s 您的network_recv:%s==================== ''' % (a,b,cd,dd,ed,ds,dr) aa = float(a[:-4])if aa > 1:mail(all3)else:print('安全')main()。

Python网络安全监控监控网络安全事件和行为的方法

Python网络安全监控监控网络安全事件和行为的方法

Python网络安全监控监控网络安全事件和行为的方法Python网络安全监控:监控网络安全事件和行为的方法网络安全是当今互联网时代面临的重要挑战之一。

为了保护网络的稳定和安全,监控网络安全事件和行为成为了关键的任务。

Python作为一种强大的编程语言,提供了一系列工具和库,可以帮助我们进行网络安全监控。

本文将介绍一些基本的方法和技术,以及如何使用Python进行网络安全监控。

一、日志分析和监控1. 整合和收集日志网络安全监控的第一步是整合和收集网络设备和应用程序的日志。

网络设备和应用程序产生的日志记录了各种事件和行为,通过对这些日志的分析可以发现潜在的安全风险。

Python提供了各种日志分析工具和库,例如ELK(Elasticsearch, Logstash, Kibana)和LogParser等,可以帮助我们进行日志收集和处理。

2. 日志分析和告警一旦日志被整合和收集,我们可以使用Python编写脚本来分析日志并触发相应的警报。

通过编写自定义的算法和规则,我们可以检测异常行为、入侵尝试和其他安全事件。

Python的正则表达式和字符串处理功能非常强大,可以帮助我们高效地分析日志,并通过邮件、短信或其他方式发送警报。

二、漏洞扫描和自动化测试1. 漏洞扫描漏洞扫描是网络安全监控的重要组成部分,它用于检测系统、应用程序和网络设备中存在的安全漏洞。

Python提供了许多漏洞扫描工具和库,例如Nmap和OpenVAS等,可以对目标系统进行自动化扫描,并输出扫描结果。

2. 自动化测试除了漏洞扫描之外,自动化测试也是保证网络安全的关键。

Python在网络安全自动化测试方面具有很大的优势。

我们可以使用Python编写自动化测试脚本,对网络设备和应用程序进行模拟攻击和压力测试,以验证它们的安全性和稳定性。

三、异常检测和行为分析1. 异常检测异常检测是网络安全监控中的另一个重要任务,它可以帮助我们发现网络中的异常行为和潜在的入侵。

python-简单邮件报警

python-简单邮件报警

python-简单邮件报警 在scrapy爬⾍项⽬中经常遇到爬取数据时报错⽆法及时处理导致数据爬取不完整只能先查看log才能发现报错 ⾸先写⼀个简单的邮件发送模块"""@file: emailHandler.py"""1#邮件服务封装23import smtplib4from email.mime.text import MIMEText5from email.utils import formataddr67class EmailHandler(object):89def__init__(self,user,password,type = 0):10"""11 :param user:str 发送⼈邮箱地址(⽤户名)12 :param password:str 发送⼈在QQ或163申请的授权码13 :param type:int 0 为QQ邮箱 1 为163邮箱14"""15 self.__QQ = {'smtp':'','port':465}16 self.__163 = {'smtp':'','port':25}17 er = user18 self.password = password19if type == 0:20 self.server=smtplib.SMTP_SSL (self.__QQ['smtp'],self.__QQ['port'])21 self.server.login (er,self.password)22elif type == 1:23 self.server=smtplib.SMTP_SSL (self.__163['smtp'],self.__163['port'])24 self.server.login (er,self.password)2526def send_mail(self,To,subject,content):27"""28 :param To:str 接收⼈邮箱地址29 :param subject:str 邮件标题30 :param content:str 邮件内容31 :return:bool True 成功 False 失败32"""33try:34 msg = MIMEText(content,'plain','utf-8')35 msg['From'] = formataddr(['spider邮件报警系统',er])36 msg['To'] = formataddr(['',To])37 msg['Subject'] = subject3839 self.server.sendmail(er,To,msg.as_string())40print("【%s】邮件发送成功"%subject)41return True42except Exception as f:43print("【%s】邮件发送失败,请检查信息"%subject)44return False 需要指定以下⼏个参数1#邮箱信息2 MAIL_CONFIG = {3'user':'xxxxx', #邮箱账号4'password':'xxxx', #邮箱授权码5'to_add':'xxx', #要发送的邮箱地址6'mail_title':'scrapy_标题' #邮件标题7 } 本项⽬中主要使⽤的 pydispatch模块绑定信号的⽅式发送邮件(代码⽚段)1from pydispatch import dispatcher2 err_spider = object()34def__init__(self):5#初始化邮件发送次数6 self.mail_count = 07 dispatcher.connect(self.send_mail, signal=err_spider)8 super(xxx, self).__init__()910def send_mail(self, error):11"当spider出现error时发送邮件到邮箱"12if self.mail_count < 1:13 mailmanager = EmailHandler(mail_conf.get('user', ''), mail_conf.get('password', ''))14 mailmanager.send_mail(mail_conf.get('to_add', ''), mail_conf.get('mail_title', ''), 'spider出现错误请及时查看\r%s' % error)15 self.mail_count += 1 准备⼯作已经完成,接下来就是在scrapy 爬取数据出现问题时调⽤这个模块向指定邮箱发送邮件(代码⽚段) #列表页数据def parse(self, response):#列表页条⽬data_lists = response.xpath('//div[@id="listbox30"]/div')try:#最后⼀个div是分页数据for data in data_lists[:-1]:item = WangdaitianyanItem()item['title'] = data.xpath('div[1]/div/div[1]/a/@title').extract_first() #标题log.msg('[info] 正在爬取【%s】' % (item['title']), level=)item['img'] = data.xpath('div[2]/div/a/img/@data-src').extract_first() #封⾯图item['introduction'] = data.xpath('div[1]/div/div[2]/text()').extract_first() #简介item['source'] = data.xpath('div[1]/div/div[3]/div[1]/span[1]/a/text()').extract_first() #源item['release_time'] = data.xpath('div[1]/div/div[3]/div[1]/span[3]/text()').extract_first() #发布时间item['read_count'] = data.xpath('div[1]/div/div[3]/div[2]/span[2]/text()').extract_first() #回复数item['comment_count'] = data.xpath('div[1]/div/div[3]/div[2]/span[5]/text()').extract_first() #评论数#抓取详情页数据#///article-513444-1.htmlurl = data.xpath('div[1]/div/div[1]/a/@href').extract_first() #urlyield scrapy.Request(url='http:%s'%url, callback=self.details_page, meta={'item':item})#分页部分#如果检测不到下⼀页不在请求try:next_page = data_lists[-1].xpath('div/a[contains(@title,"下⼀页")]/@href').extract_first() #拿去下⼀页urlyield scrapy.Request(url='https://%s'%next_page, callback=self.parse)except Exception as e:passexcept Exception as e:#发送邮件dispatcher.send(signal=err_spider, error=traceback.format_exc()) 当爬⾍出现问题时会以邮件的形式发送到邮箱。

Python异常检测以及报警实现

Python异常检测以及报警实现

Python异常检测以及报警实现# -*- encoding: utf-8 -*-'''@File : launcher.py@Time : 2021/11/16 17:55:00@Author : Shydow@Version : 1.0@Desc : 3sigma异常值检测'''# here put the import libimport numpy as npimport pandas as pdfrom matplotlib import pyplot as pltimport seaborn as snsimport requestsfrom DingDingBot import DDBOTdef load_data(cols:list, filter: str):""" 加载数据 """df = pd.read_csv("data\detail.csv", encoding="utf-8")p_col = ["stat_day", "stat_hours", "app_channel", "pv", "ids_uv", "users_uv"]df.columns = p_coldf = df[df["app_channel"] == filter]return df[cols]def sigma_stat(N: int):""" N is k sigma """# 预处理数据cols = ["stat_day", "stat_hours", "pv"]init_data = load_data(cols, "Shanghai")init_data["stat_hours"] = init_data["stat_hours"].map(str)init_data["date"] = init_data["stat_day"].str.cat(init_data["stat_hours"], sep=" ")# 模型初始化data_y = init_data["pv"]data_x = init_data["date"]ymean = np.mean(data_y)ystd = np.std(data_y)threshold1 = ymean - N * ystdthreshold2 = ymean + N * ystdprint("pv平均值:{0}, 标准差:{1}, sigma-min:{2}, sigma-max:{3}".format(ymean, ystd, threshold1, threshold2)) # 将异常值保存outlier = []outlier_x = []for i in range(0, len(data_y)):if (data_y.iloc[i] < threshold1 or data_y.iloc[i] > threshold2):outlier.append(data_y.iloc[i])outlier_x.append(data_x.iloc[i])else:continueresult = zip(outlier_x, outlier)print("\n异常数据如下:\n")for item in result:print(item)return data_ydef quantile_stat(data_x, data_y):""" 分位数异常检测 """# sns.boxplot(data_y) 箱线图# 计算上四分位数和下四分位数q1 = data_y.quantile(0.25)q3 = data_y.quantile(0.75)low_outlier = q1 - 1.5 * (q3 - q1)high_outlier = q3 + 1.5 * (q3 - q1)# 检测异常点q_outlier = []q_outlier_x = []for i in range(0, len(data_y)):if (data_y.iloc[i] < lower_outlier or data_y.iloc[i] > high_outlier): q_outlier.append(data_y.iloc[i])q_outlier_x.append(data_x.iloc[i])else:continuedef send_msg():""" 钉钉异常检测报警 """passif __name__ == '__main__':pass。

基于Python的邮件检测工具

基于Python的邮件检测工具

基于Python的邮件检测⼯具邮件快速检测⼯具概要介绍mmpi,是⼀款使⽤python实现的开源邮件快速检测⼯具库,基于框架设计开发。

mmpi⽀持对邮件头、邮件正⽂、邮件附件的解析检测,并输出json检测报告。

mmpi,邮件快速检测⼯具库检测逻辑:1. ⽀持解析提取邮件头数据,包括收件⼈、发件⼈的姓名和邮箱,邮件主题,邮件发送时间,以及邮件原始发送IP。

通过检测发件⼈邮箱和邮件原始发送IP,实现对邮件头的检测。

2. ⽀持对邮件正⽂的解析检测,提取text和html格式的邮件正⽂,对text邮件正⽂进⾏关键字匹配,对html邮件正⽂进⾏解析分析检测,实现探针邮件检测、钓鱼邮件检测、垃圾邮件检测等其他检测。

3. ⽀持对邮件附件等解析检测ole⽂件格式:如doc、xls等,提取其中的vba宏代码、模板注⼊链接zip⽂件格式:提取压缩⽂件列表,统计⽂件名、⽂件格式等rtf⽂件格式:解析内嵌ole对象等其他⽂件格式:如PE可执⾏⽂件4. 检测⽅式包括基础信息规则检测⽅式yara规则检测⽅式适⽤前提mmpi的分析判定检测前提:邮件系统环境。

脱离邮件环境上下⽂,检测规则的依据就不可靠了。

使⽤⽅式1. 安装$ pip install mmpi备注:windows安装yara-python,可以从下载2. 命令执⾏$ mmpi-run $email_path3. 快速开始from mmpi import mmpidef main():emp = mmpi()emp.parse('test.eml')report = emp.get_report()print(report)if __name__ == "__main__":main()4. 输出格式{// 固定字段"headers": [],"body": [],"attachments": [],"signatures": []// 动态字段"vba": [],"rtf": [],}⼯具特⾊mmpi完全基于python开发,使⽤python原⽣email、html、zip库进⾏解析,基于做定制化修改,⽀持对office⽂档和rtf⽂档的解析,再结合yara实现对其他⽂件的检测。

python实现批量探测IP存活性并发送邮件告警

python实现批量探测IP存活性并发送邮件告警

p y t h o n实现批量探测I P存活性并发送邮件告警Document number:NOCG-YUNOO-BUYTT-UU986-1986UTpython实现批量探测IP存活性并发送邮件告警前言:运维工程师在实际运维过程中,由于需要监控的IP主机数量过多且单位又没有一个监控软件使用导致日常巡检几十台或几百台主机就非常麻烦,有时候主机发生死机或宕机这样严重的故障又不能及时发现存在重大安全隐患,那么python脚本实现内网主机存活性探测且带有邮件告警功能就能帮助运维工程师解决这些问题。

好了,废话不多说,直接上图!正文:多数代码都有借鉴网上一些大神的劳动成果,小菜只是将其综合揉捏在一起,请大神们多多见谅!代码一定要在linux系统中运行,window环境中有其个别模块不支持!:邮件告警模块:批量ping工具:需要监控的系统或主机IP列表:轮询主程序:邮件告警转发内容代码如下:代码如下:代码如下:中IP地址格式如下:文件为空就行:Liunx环境下运行结果如下:我的外网邮箱中收到告警邮件:源代码内容:#coding=utf-8#!/usr/bin/python#发送邮件模块importosimportsysimportsmtplibfromimportMIMEMultipartfromimportMIMETextfromimportMIMEImage#读取文件名file_path=[0]listfile=(file_path)att_name=listfile[4]#发送者邮件地址、用户名、密码sender=''receiver=''subject="pythontestmessage"smtpserver=''username=''password='XXXX'#发送邮件的标题,和邮件附件msgRoot=MIMEMultipart('related')msgRoot['Subject']=att_nameatt=MIMEText(open(att_name,'rb').read(),'base64','utf-8') att["Content-Type"]='application/octet-stream'att["Content-Disposition"]='attachment;filename='+att_name (att)#连接邮件服务器域名,带入认证用户名和密码smtp=()('')(username,password)(sender,receiver,())()源代码内容:#coding=utf-8#!/usr/bin/python#批量ping模块importpexpectfromthreadingimportThreadimportdatetimeimportos#打开文件读取需要监控的ip地址hostIP=[]e=open("","r")foriine:i=("\n","")(i)()report_ok=[]report_error=[]classPING(Thread):def__init__(self,ip):(self)=ipdefrun(self):Curtime=#Scrtime=Curtime+(0,minute,0)#print("[%s]主机[%s]"%(Curtime,)ping=("ping-c1%s"%)check=([,"1packetstransmitted,1received,0%packetloss"],2)ifcheck==0:print("[%s]超时%s"%(Curtime,)f=open("","a")+"\n")()elifcheck==1:print("[%s]%s可达"%(Curtime,)else:print("[%s]主机%s不可达"%(Curtime,)#多线程同时执行T_thread=[]foriinhostIP:t=PING(i)(t)foriinrange(len(T_thread)):T_thread[i].start()源代码内容:#coding=utf-8#!/usr/bin/python__author__='Administrator'importhashlibimportsysimportosimporttime#获取的md5值函数defGetStrMd5():f=open("","r")content=()()m0=()(content)()#每2分钟循环探测的md5值,如果过前后文件大小一致再次轮询#如果前后文件不一致,就发送告警邮件if__name__=="__main__":whileTrue:md1=GetStrMd5()(120)("")md2=GetStrMd5()printmd1,md2if(md1inmd2):pass else: ("")。

Python脚本实现邮件报警功能

Python脚本实现邮件报警功能

Python脚本实现邮件报警功能Python脚本实现邮件报警功能使⽤了smtplib等第三⽅库,进⾏发送邮件,完成邮件报警功能如下是实例 :#!/usr/bin/pythonimport globimport operatorfrom optparse import OptionParserimport smtplibimport email.MIMEText as MIMETextimport email.Utils.formadate as formatdatemsg = ""#主⽅法def main():global optionsglobal msgparser = OptionParser(add_help_option=False)parser.add_option("-m", "--mail", dest="mail", type="str", help="email address to send report result (comma separated)") parser.add_option("-t", "--title", dest="title", type="str", help="email title (default:Error File Count)")parser.add_option("-a", "--admin", dest="admin", type="str", help="set sender address. works with -m option")(options, args) = parser.parse_args()#这⾥监控⽂件夹下的⽂件数,超出25个⽂件即报警datanum = cntFiles("/data/","csv")if (operator.gt(datanum,25)):msg += " Please be alert : \n the number of files under /data/ path is greater than 25 :"msg += "\n =========================================="msg += "\n The number of files is : " + str(datanum)sendmsg(options,msg)print("==== end ====")#添加发送邮件的信息def sendmsg(options,msg):if options.mail:toAddr = options.mailif options.admin:fromAddr = options.adminelse:fromAddr = 'zhangsan@'#这⾥是公司的公⽤SMTP邮箱账号if options.title:subject = options.titleelse:subject = 'File Stacking Alarm'msg += "\n ========================================== \n"print( msg)msg = createMsg(fromAddr, toAddr, subject, msg)print( msg)send(fromAddr, toAddr, msg)else:print( msg)#glob⽅法,统计⽂件夹下的⽂件数def cntFiles(in_directory, ext):stage = len(glob.glob1(in_directory,"*." + ext))return stage#创建邮件头def createMsg(fromAddr, toAddr, subject, body):msg = MIMEText(body)msg['Subject'] = subjectmsg['To'] = toAddrmsg['From'] = fromAddrmsg['Date'] = formatdate()return msg#发送邮件def send(fromAddr, toAddr, msg):try:#这⾥添加公司的SMTP邮箱地址s = smtplib.SMTP('192.168.12.120')s.sendmail(fromAddr, toAddr.split(','), msg.as_string())s.close()print("SUCCESS: sending email")except smtplib.SMTPException:print("ERROR: sending email")if __name__ == '__main__':main()linux上做计划任务,把指令添加进计划任务中:Errymsfileemail.py -m zhangsan@ -t "[ERROR/$HOST] File Stacking Alarm"。

使用Python实现批量发送邮件

使用Python实现批量发送邮件

使⽤Python实现批量发送邮件需求: 给定收件⼈列表,使⽤指定的发件⼈给所有收件⼈逐个发送邮件,并可以指定邮件内容与附件。

Python代码:#!/usr/bin/env python3#coding: utf-8import osimport sysimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagefrom email.mime.base import MIMEBasefrom email import encoders#发送服务器配置sender_host = ':25'sender_user = 'xxx@'sender_pwd = 'xxx'sender_name = 'xxx@'attach_file = '附件.pdf'#加载邮件内容:第⼀⾏是邮件标题,第⼆⾏是分割线,第三⾏之后是邮件正⽂default_title = ''mail_content = ''if not os.path.exists("邮件内容.txt"):print("⽂件邮件内容.txt 不存在");exit(0);contentFile = open("邮件内容.txt");contentLines = contentFile.readlines();contentFile.close();if len(contentLines) < 3:print("⽂件邮件内容.txt ⾄少三⾏");exit(0);default_title = contentLines[0];mail_content = ''.join(contentLines[2:]);#加载收件⼈列表if not os.path.exists("收件⼈列表.txt"):print("⽂件收件⼈列表.txt 不存在");exit(0);recvFile = open("收件⼈列表.txt");recvLines = recvFile.readlines();recvFile.close();#添加附件att = MIMEBase('application', 'octet-stream')att.set_payload(open(attach_file, 'rb').read())att.add_header('Content-Disposition', 'attachment', filename=('gbk', '', attach_file));encoders.encode_base64(att);#发送邮件smtp = smtplib.SMTP();smtp.connect(sender_host);smtp.login(sender_user, sender_pwd);for recv in recvLines:msg = MIMEMultipart('alternative');msg['Subject'] = default_title;msg['From'] = sender_name;msg['To'] = recv;msg.attach(MIMEText(mail_content));msg.attach(att);smtp.sendmail(sender_name, recv, msg.as_string());print("已发送:" + recv);smtp.quit();收件⼈列表⽰.txt:10001@10002@10003@邮件内容.txt测试标题---------------------------------------------------------------------XX你好,测试内容1测试内容2测试内容3xxx2015-11-13。

使用python检测主机存活端口及检查存活主机

使用python检测主机存活端口及检查存活主机

使⽤python检测主机存活端⼝及检查存活主机监测主机存活的端⼝#!/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_msgsys.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_msgpassif __name__ == '__main__':parser = argparse.ArgumentParser(description='remote port scaner')parser.add_argument('--host',action="store",dest="host",default='')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_portscan_ports(host,start_port,end_start)使⽤python 检查存活主机这⾥的设备对存活状态不是很敏感,就使⽤了脚本来检测存活状态,之前⽤shell做了⼀个,实现的功能是使⽤Ping命令检测服务器存活,不在线会将不在线的服务器及IP通过邮件发送提醒,现在在学习python,改了⼀个python版本。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

p y t h o n实现批量探测I P存活性并发送邮件告

Document number:NOCG-YUNOO-BUYTT-UU986-1986UT
python实现批量探测IP存活性并发送邮件告警
前言:
运维工程师在实际运维过程中,由于需要监控的IP主机数量过多且单位又没有一个监控软件使用导致日常巡检几十台或几百台主机就非常麻烦,有时候主机发生死机或宕机这样严重的故障又不能及时发现存在重大安全隐患,那么python脚本实现内网主机存活性探测且带有邮件告警功能就能帮助运维工程师解决这些问题。

好了,废话不多说,直接上图!
正文:
多数代码都有借鉴网上一些大神的劳动成果,小菜只是将其综合揉捏在一起,请大神们多多见谅!代码一定要在linux系统中运行,window环境中有其个别模块不支持!
:邮件告警模块
:批量ping工具
:需要监控的系统或主机IP列表
:轮询主程序
:邮件告警转发内容
代码如下:
代码如下:
代码如下:
中IP地址格式如下:
文件为空就行:
Liunx环境下运行结果如下:
我的外网邮箱中收到告警邮件:
源代码内容:
#coding=utf-8
#!/usr/bin/python
#发送邮件模块
importos
importsys
importsmtplib
fromimportMIMEMultipart
fromimportMIMEText
fromimportMIMEImage
#读取文件名
file_path=[0]
listfile=(file_path)
att_name=listfile[4]
#发送者邮件地址、用户名、密码
sender=''
receiver=''
subject="pythontestmessage"
smtpserver=''
username=''
password='XXXX'
#发送邮件的标题,和邮件附件
msgRoot=MIMEMultipart('related')
msgRoot['Subject']=att_name
att=MIMEText(open(att_name,'rb').read(),'base64','utf-8') att["Content-Type"]='application/octet-stream'
att["Content-Disposition"]='attachment;filename='+att_name (att)
#连接邮件服务器域名,带入认证用户名和密码
smtp=()
('')
(username,password)
(sender,receiver,())
()
源代码内容:
#coding=utf-8
#!/usr/bin/python
#批量ping模块
importpexpect
fromthreadingimportThread
importdatetime
importos
#打开文件读取需要监控的ip地址
hostIP=[]
e=open("","r")
foriine:
i=("\n","")
(i)
()
report_ok=[]
report_error=[]
classPING(Thread):
def__init__(self,ip):
(self)
=ip
defrun(self):
Curtime=
#Scrtime=Curtime+(0,minute,0)
#print("[%s]主机[%s]"%(Curtime,)
ping=("ping-c1%s"%)
check=([,"1packetstransmitted,1received,0%packetloss"],2)
ifcheck==0:
print("[%s]超时%s"%(Curtime,)
f=open("","a")
+"\n")
()
elifcheck==1:
print("[%s]%s可达"%(Curtime,)
else:
print("[%s]主机%s不可达"%(Curtime,)
#多线程同时执行
T_thread=[]
foriinhostIP:
t=PING(i)
(t)
foriinrange(len(T_thread)):
T_thread[i].start()
源代码内容:
#coding=utf-8
#!/usr/bin/python
__author__='Administrator'
importhashlib
importsys
importos
importtime
#获取的md5值函数
defGetStrMd5():
f=open("","r")
content=()
()
m0=()
(content)
()
#每2分钟循环探测的md5值,如果过前后文件大小一致再次轮询#如果前后文件不一致,就发送告警邮件
if__name__=="__main__":
whileTrue:
md1=GetStrMd5()
(120)
("")
md2=GetStrMd5()
printmd1,md2
if(md1inmd2):
pass else: ("")。

相关文档
最新文档