python脚本实现监控apache,并使用mail发送报警
- [root@localhost python]# cat apache.py
- #!/usr/bin/env python
- # -*- coding: UTF-8 -*- #这个是使用编码,一般有中文建议使用
- import socket #以下都是载入模块
- import re
- import sys
- import smtplib
- def mail(address): #定义mail函数,并传一个参过来即address
- smtp = smtplib.SMTP() #smtp功能
- smtp.connect("smtp.qq.com", "25") #连接smtp服务器
- smtp.login('[email protected]', 'passwod')#登陆邮箱
- smtp.sendmail('[email protected]', '[email protected]', 'From: [email protected]\rTo: [email protected]\rSubject: 服务器出故障\r\n\r\n%s服务器出问题了' % address)#发送的主题、收件人、报警内容
- smtp.quit() #退出邮箱
- def check_server(address,port): #定义check_server函数,并传两个参数address和port
- s=socket.socket()
- print '准备连接%s这台服务器的端口:%s......' % (address,port)
- try:
- s.connect((address,port)) #连接地址和端口
- print '正在连接%s这台服务器的端口:%s......' % (address,port)
- return '成功'
- except socket.error,e: #异常错误处理
- print"连接%s这台服务器的端口:%s失败: %s" % (address,port,e)
- mail(address) #发送邮件
- return '失败'
- if __name__=='__main__':
- from optparse import OptionParser #载入选项说明模块
- parser=OptionParser()
- parser.add_option("-a","--address",dest="address",default='localhost',help="ADDRESS for web-server",metavar="ADDRESS")
- parser.add_option("-p","--port",dest="port",type="int",default=80,help="PORT for web-server",metavar="PORT")
- #以上两个都是设置模块说明
- (options,args)=parser.parse_args() #获取参数
- print 'options:%s,Args:%s' % (options,args) #输入获取的选项
- check=check_server(options.address,options.port) #执行
- print '返回的结果: %s' % check #输入check后的结果
- sys.exit(not check) #退出
测试结果:
[root@localhost python]# python apache.py -a www.qq.com -p 80
options:{'port': 80, 'address': 'www.qq.com'},Args:[]
准备连接www.qq.com这台服务器的端口:80......
正在连接www.qq.com这台服务器的端口:80......
返回的结果: 成功
[root@localhost python]# python apache.py -a 192.168.1.1 -p 80
options:{'port': 80, 'address': '192.168.1.1'},Args:[]
准备连接192.168.1.1这台服务器的端口:80......
连接192.168.1.1这台服务器的端口:80失败: (110, 'Connection timed out')
返回的结果: 失败
当失败后会有收到邮件,赶快去查看
学习python心得,多看书,多写,多问,多向高手学习,在此,本人说明,本人是菜鸟