1.目录结构:
.
├── Alarm
│ └── __init__.py
├── Config
│ ├── Get_ip.py
│ ├── TanCeHostIp.txt #这个txt定义存储探活的ip列表
│ ├── __init__.py
│ └── __pycache__
│ ├── Get_ip.cpython-310.pyc
│ └── __init__.cpython-310.pyc
├── Monitor
│ ├── Send_Mail.py
│ ├── Tanhuo.py
│ ├── __init__.py
│ └── __pycache__
│ ├── Send_Mail.cpython-310.pyc
│ └── __init__.cpython-310.pyc
├── Routing_Inspection
└── __main__.py
2.今天写的是Monitor下的针对IP的探活并且发生邮件。
3.下面是Get_ip模块:
#下面是获取IP的函数
def Get_ip():
#获取当前文件所在的目录
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
#打开获取目录下的ip.txt文件
with open(BASE_DIR + '/TanCeHostIp.txt','r') as f:
#读取文件中的内容
ips = f.read()
#将读取的内容转换成列表
ips = ips.split('\n')
#去除列表中的空格
ips = [ip.strip() for ip in ips if ip.strip()]
#返回列表
return ips
4.发送邮件的模块
# 这是一个使用QQ邮箱发送smtp的模块
# 1.引入需要的模块
import smtplib
# 2.引入邮件模块
from email.mime.text import MIMEText
# 3.引入邮件头模块
from email.header import Header
# 4.引入时间模块
import time
# 5. 定义一个变量来存放当前时间
now_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
# 4.定义一个函数,用来发送邮件
def Send_Mail(live_ip):
# 4.1_定义发送邮箱
sender = 'xxx' #需要自己的邮箱
# 4.2_定义接收邮箱
receiver = 'xxxx' #需要自己的邮箱
# 4.3_定义发送主题
# 发送主题中包含当前的时间
subject = '这是一封主机存活测试邮件' + now_time
# 4.4_定义发送内容
content = '这是一封主机存活测试邮件,存活的主机有:' + str(live_ip)
# 4.5_定义发送服务器
smtpserver = 'smtp.qq.com'
# 4.6_定义发送邮箱的用户名和密码
username = xxxxx' #需要自己的邮箱
password = 'xxxxxxx' #需要自己写smtp的密码
# 4.7_定义邮件内容
message = MIMEText(content, 'plain', 'utf-8')
# 根据RFC5322协议,邮件标头中需要包含'From'信息。这个信息包含发件人的邮件地址和名称
message['From'] = sender
# 4.8_定义邮件主题
message['Subject'] = Header(subject, 'utf-8')
# 4.9_连接发送服务器
smtp = smtplib.SMTP()
# 4.10_连接发送服务器
smtp.connect(smtpserver)
# 4.11_登录发送服务器
smtp.login(username, password)
# 4.12_发送邮件
smtp.sendmail(sender, receiver, message.as_string())
# 4.13_关闭发送服务器
smtp.quit()
5.进行调用的TanHuo模块
#这个模块来实现对主机的存活检测
# 1.通过ping命令来检测主机的存活
# 1.1_获取项目根目录下的路径
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 1.2_将BASE_DIR添加到系统环境变量中
import sys
sys.path.append(BASE_DIR)
# 1.3_引入Config文件夹下的Get_ip模块中的get_ip()函数
from Config.Get_ip import Get_ip
# 1.4_引入ping3模块中的ping()函数,用来检测主机的存活
from ping3 import ping
# 1.5_定义一个函数,用来检测主机的存活
def Check_ip():
# 1.5.1_使用ips使用get_ip()函数获取TanCeHostIp.txt文件中的ip地址
ips = Get_ip()
# 1.5.2_定义一个空列表,用来存放存活的主机
live_ip = []
# 1.5.3_循环遍历ips列表中的ip地址
for ip in ips:
# 1.5.3_使用ping()函数检测主机的存活
result = ping(ip)
# 1.5.4_判断主机是否存活
if result:
# 1.5.5_将存活的主机添加到live_ip列表中
live_ip.append(ip)
# 1.5.6_返回存活的主机
return live_ip
# 2.引入Monitor文件夹下的Send_Mail模块中的Send_Mail()函数
from Monitor.Send_Mail import Send_Mail
# 2.1 使用Send_Mail()函数发送邮件,邮件内容为存活的主机
Send_Mail(Check_ip())