《liNUX学习:linux基础之-利用shell脚本实现自动监控系统服务》要点:
本文介绍了liNUX学习:linux基础之-利用shell脚本实现自动监控系统服务,希望对您有用。如果有疑问,可以联系我们。
目的:监控集群内Nginx及nfs服务运行是否正常,如任一服务非常,则发送邮件通知用户
条件: 1. 主机及子机IP地址,hostname已肯定;
2. 主机与子机可以或许免密通讯,即基于密匙通讯(相关命令:ssh-keygen;ssh-copy-ID -i web1);
必要的文件:
1. python邮件发送对象;
2. nfc.sh监控脚本,监控Nginx及nfs服务状态,并挪用mail发送工具通知用户;
3. nfc-install.sh监控部署剧本,运行在主机,为子机配置文件,执行命令;
具体代码:
1. 邮件发送对象
将以下代码创立到“/usr/bin/mail”文件内,并赋予执行权限(chmod +x /usr/bin/mail)
#!/usr/bin/python# -*- Coding: UTF-8 -*-import sysimport smtplibimport email.mime.multipartimport email.mime.textserver = 'smtp.163.com'port = '25'def sendmail(server,port,user,pwd,msg): smtp = smtplib.SMTP() smtp.connect(server,port) smtp.login(user,pwd) smtp.sendmail(msg['from'],msg['to'],msg.as_string()) smtp.quit() print('邮件发送成功email has send out !')if __name__ == '__main__': msg = email.mime.multipart.MIMEMultipart() msg['Subject'] = 'check your service of Nginx and nfs' msg['From'] = 'python4_mail@163.com' msg['To'] = 'python4_recvmail@163.com' user = 'python4_mail' pwd = '123456789' content='%s\n%s' %('\n'.join(sys.argv[1:4]),' '.join(sys.argv[4:])) #格式处理,专门针对我们的邮件格式 txt = email.mime.text.MIMEText(content,_charset='utf-8') msg.attach(txt) sendmail(server,msg)VIEw Code
python通过SMTP发送邮件失败:
错误1:smtplib.SMTPAuthenticationError: (550,b‘User has no permission‘)
我们使用python发送邮件时相当于自定义客户端根据用户名和暗码登录,然后使用SMTP服务发送邮件,新注册的163邮箱是默认不开启客户端授权的(对指定的邮箱大师客户端默认开启),因此登录总是被拒绝,解决办法(以163邮箱为例):进入163邮箱-设置-客户端授权暗码-开启(授权码是用于登录第三方邮件客户端的专用暗码)
错误2:smtplib.SMTPAuthenticationError: (535,b‘Error: authentication Failed‘)
以163邮箱为例,在开启POP3/SMTP服务,并开启客户端授权暗码时会设置授权码,将这个授权码代替smtplib.SMTP().login(user,password)方法中的password即可.
2. nfc.sh监控剧本
#! /bin/bash#Nginx及nfs服务监控脚本,如果非常,将发送邮件通知function monitor_nfc() {systemctl status NginxNginx=$?systemctl status nfsnfs=$?clearif [ $Nginx -eq 0 ] && [ $nfs -eq 0 ] then msg="TIME:$(date +%F_%T) HOSTname:$(hostname) IPADDR:$(ifconfig |awk 'NR==2{print }') MSG:Nginx.service and nfs.service is both running" echo msg# /usr/bin/mail $msg #服务运行正常,不发送邮件通知elif [ $Nginx -ne 0 ] && [ $nfs -eq 0 ] then msg="TIME:$(date +%F_%T) HOSTname:$(hostname) IPADDR:$(ifconfig |awk 'NR==2{print }') MSG:Nginx.service is dead,nfs.service is running" echo $msg /usr/bin/mail $msgelif [ $Nginx -ne 0 ] && [ $nfs -ne 0 ] then msg="TIME:$(date +%F_%T) HOSTname:$(hostname) IPADDR:$(ifconfig |awk 'NR==2{print }') MSG:Nginx.service and nfs.service is both dead" echo $msg /usr/bin/mail $msgelif [ $Nginx -eq 0 ] && [ $nfs -ne 0 ] then msg="TIME:$(date +%F_%T) HOSTname:$(hostname) IPADDR:$(ifconfig |awk 'NR==2{print }') MSG:Nginx.service is running,nfs.service is dead" echo $msg /usr/bin/mail $msgfi}monitor_nfc &>> /tmp/monitor.logVIEw Code
3. nfc-install监控部署脚本
#! /bin/bash#首先执行主机的nfc.sh服务监控脚本/root/nfc.sh#然后将主机的服务监控脚本nfc.sh和发送邮件文件上传至web机器for i in {134,135,136}doscp /root/nfc.sh 192.168.47.$i:/share/ #将主机的服务监控脚本nfc.sh上传至web机器scp /usr/bin/mail 192.168.47.$i:/usr/bin/ #将发送邮件文件上传至web机器ssh root@192.168.47.$i chmod +x /share/nfc.sh #增加nfc脚本文件的执行权限ssh root@192.168.47.$i chmod +x /usr/bin/mail #增加发送邮件文件的执行权限ssh root@192.168.47.$i /share/nfc.sh #执行nfc脚本监控功效donessh 192.168.47.133 #最终回到主机终端VIEw Code
详见图片
成果:
主机
子机1
本文永远更新链接地址:
内存溢出PHP培训学院每天发布《liNUX学习:linux基础之-利用shell脚本实现自动监控系统服务》等实战技能,PHP、MysqL、liNUX、APP、Js,CSS全面培养人才。
总结以上是内存溢出为你收集整理的LINUX学习:Linux基础之-利用shell脚本实现自动监控系统服务全部内容,希望文章能够帮你解决LINUX学习:Linux基础之-利用shell脚本实现自动监控系统服务所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)