【Linux】结合Python 简易实现监控公司网站,邮件发送异常
背景
由于一些原因,博主负责测试的网站的服务器切换到了香港,切换后出现了多次访问超时的情况
于是主动请缨写一个自动监测的脚本,本来准备完全使用shell来写,后来发现shell发送邮件只能在测试机之间进行,所以添加了增加了一个Python文件来完成该功能。
实现思路
使用Linux系统自带的定时模块crontab,设置每隔五分钟调用一次检查脚本检查服务,如果发现异常,调用Python脚本发送邮件
邮件4小时内只会发送一次,如果执行了发送邮件的脚本,就使用sed命令将对应的调用代码置为无效
- 邮件接受人和需要监控的url都放在配置文件中,方便后续扩展。
- 使用crontab的好处是,只要系统在运行,脚本就能正常运行。
请求脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #! /bin/bash #把所有标准输出重定向到到日志文件中 exec 1 >> / home / XXX / Monitor / cfg.log #获取配置文件中的url urls = `cat / home / XXX / Monitor / url.inc|grep - v '#' ` for i in ${urls} do #获取页面返回码 result = `curl - I - m 10 - o / dev / null - s - w % {http_code} ${i}` #日志内容(标准输出) date;echo ${result};echo $i ;echo '-----------------------------' #判断数据是否异常,如果异常就调用发送邮件的脚本, #只发送一次邮件,如果执行了发送邮件的代码,就将该段代码置为无效 [ "$result" = 200 ] && `python / home / XXX / Monitor / mail_sender.py $i ${result}` && `sed - i 's/\&\&/\#\#/' / home / XXX / Monitor / request.sh` done |
Python邮件发送脚本
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 | #! /usr/bin/python # coding:utf-8 import smtplib,sys from email.mime.text import MIMEText from email.header import Header sender = 'Bingo<XXXXXXXX@163.com>' #主题 subject = 'XXX出现异常,页面访问不正常' #指定163邮箱服务器,用户名、密码 smtpserver = 'smtp.163.com' username = 'XXXXXXXX@163.com' passwd = 'XXXXXX' #将传入参数存到变量details中 details = sys.argv[ 1 ] + ' 异常----' + ' 异常响应码 : ' + sys.argv[ 2 ] #获取收件人信息 emails = open ( '/home/test/Monitor/email_add.inc' , 'r' ) data = emails.readlines() receiver = data[ 1 :] #定义发件人、收件人、主题、邮件内容等信息 msg = MIMEText(details, 'plain' , 'utf-8' ) msg[ 'subject' ] = Header(subject, 'utf-8' ) msg[ 'From' ] = 'BINGO<XXXXXXXX@163.com>' msg[ 'To' ] = "," .join(data[ 1 :]) #链接服务器、发送邮件 smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(username,passwd) smtp.sendmail(sender,receiver,msg.as_string()) smtp.close() |
定时任务设置
crontab -e 打开定时任务编辑器,添加下面两行
*/5 * * * * bash /home/brenda/CFG_Monitor/request.sh >> /home/brenda/CFG_Monitor/cfg.log * */4 * * * bash /home/brenda/CFG_Monitor/recover.sh >> /home/brenda/CFG_Monitor/cfg.log
恢复邮件发送能力脚本
#! /bin/bash
sed -i '/\[/{s/\#\#/\&\&/g}' /home/XXX/Monitor/request.sh
文中可能存在描述不正确,欢迎大神们指正补充!
感谢阅读,如果觉得对你有帮助,就在右下角点个赞吧,感谢!
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律