Python测试环境巡检工具
Python测试环境巡检测试过程中,由于测试环境机器较多且全都是在虚拟机上做的,经常会有某些机器挂掉导致站点访问出错的问题,手动去一个一个Ping实在是麻烦,于是用Python写了一个小脚本,来批量Ping测试。实现思路:一、设计要求:1.目标机器的IP可配置2.可以一次性Ping多台机器3.Ping测试的结果可查询4.如果有Ping不通的机器,可以主动邮件通知二、
·
Python测试环境巡检
测试过程中,由于测试环境机器较多且全都是在虚拟机上做的,经常会有某些机器挂掉导致站点访问出错的问题,手动去一个一个Ping实在是麻烦,于是用Python写了一个小脚本,来批量Ping测试。
实现思路:
一、设计要求:
1.目标机器的IP可配置
2.可以一次性Ping多台机器
3.Ping测试的结果可查询
4.如果有Ping不通的机器,可以主动邮件通知
二、设计思路:
1.将需要测试的IP放在一个Txt文本文件中,所有目标机器的IP手动维护在这个文件中
2.将Ping测试的结果放在一个Txt文件中,包括IP,测试结果等
3.主程序要实现,Ping测试和邮件发送两个主要方法
三、代码实现:
1.新建一个Ping文件夹,该文件目录下创建一个host.txt文件,用来维护待测IP
2.新建ping.py,代码如下:
import os
import sendMail
def getIpStatus():
hasFail = False
try:
Host = open("host.txt", "r")
Result = open("result.txt", "w")
Result.write("测试环境巡检结果:\n")
for line in Host.readlines():
line = line.strip("\n")
if "#" in line:
Result.write(line +"\n")
else:
res = os.system("ping " + line)
if res == 0:
print(line +" 可用...")
Result.write(line + " 可用...\n")
else:
print(line +" 不可用...")
Result.write(line + " 不可用...\n")
hasFail = True
Host.close()
Result.close()
except:
print("Host文件读取失败...")
if hasFail:
print("有机器无法ping通!")
return (True)
if __name__ == '__main__':
if getIpStatus():
sendMail.sendMail()
3.新建sendMail.py实现邮件发送功能
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
def sendMail():
mail_host="******" #设置邮件服务器
mail_user="******" #用户名
mail_pass="******" #口令
sender = '******' #发送邮件的邮箱
receivers = [******] # 接收邮件的邮箱,可设置为你的QQ邮箱或者其他邮箱,多个邮箱用,分隔开来
#创建一个带附件的实例
message = MIMEMultipart()
message['From'] = "******" #邮件发送人
message['To'] = "******" #邮件接收人
subject = '测试环境巡检结果' #邮件主题
message['Subject'] = Header(subject, 'utf-8')
#邮件正文内容
message.attach(MIMEText('测试环境巡检有机器未能ping通,详细结果见附件……', 'plain', 'utf-8'))
# 构造附件1,传送附件文件
att1 = MIMEText(open("result.txt", 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="Result.txt"'
message.attach(att1)
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print ("邮件发送成功")
except smtplib.SMTPException:
print ("Error: 无法发送邮件")
4.运行结果截图:
5.注意事项:
5.1Windows系统和Linux系统对于换行符的规定不一样,按照换行符进行切割的时候,需要特殊处理
5.2 Linux中中文编码需要特殊处理,具体方法是在中文字符前加“U”
5.3 os.system-ping方法返回的是Ping命令是否有运行结果,对于本来就不存在的IP,也会有返回值,所以结果可能也是通的,需要注意。如果要兼容这个问题,可以使用正则匹配命令返回内容的方法进行处理,我这里是知道具体的机器IP的,所以处理相对简单
5.4 邮件服务器的配置,可上对应邮件提供商网站查询
Done!
更多推荐
已为社区贡献1条内容
所有评论(0)