python脚本实现监控apache,并使用mail发送报警

    最近学习了python简明教程,决定使用python写下关于apache的监控,对于python的强大,这里就不说了,相信关注这门语言的童鞋,都懂得,以下代码实现监控和报警,如果有更好的方法的话,一起探讨,不多说啦,上代码 

 

  1. [root@localhost python]# cat apache.py 
  2. #!/usr/bin/env python 
  3. # -*- coding: UTF-8 -*-  #这个是使用编码,一般有中文建议使用
  4. import socket  #以下都是载入模块
  5. import re 
  6. import sys 
  7. import smtplib 
  8.     
  9. def mail(address):    #定义mail函数,并传一个参过来即address
  10.     smtp = smtplib.SMTP()  #smtp功能  
  11.     smtp.connect("smtp.qq.com", "25") #连接smtp服务器    
  12.     smtp.login('yoyo@XXX.net', 'passwod')#登陆邮箱    
  13.     smtp.sendmail('yoyo@zhnews.net', 'yoyo@XXX.net', 'From: yoyo@XXX.net\rTo: yoyo@XXX.net\rSubject: 服务器出故障\r\n\r\n%s服务器出问题了' % address)#发送的主题、收件人、报警内容   
  14.     smtp.quit() #退出邮箱
  15.  
  16.  
  17. def check_server(address,port): #定义check_server函数,并传两个参数address和port 
  18.     s=socket.socket() 
  19.     print '准备连接%s这台服务器的端口:%s......' % (address,port) 
  20.     try: 
  21.         s.connect((address,port)) #连接地址和端口 
  22.         print '正在连接%s这台服务器的端口:%s......' % (address,port) 
  23.         return '成功' 
  24.     except socket.error,e:  #异常错误处理
  25.         print"连接%s这台服务器的端口:%s失败: %s" % (address,port,e) 
  26.         mail(address) #发送邮件
  27.         return '失败' 
  28.  
  29.  
  30.  
  31. if __name__=='__main__': 
  32.     from optparse import OptionParser  #载入选项说明模块
  33.     parser=OptionParser() 
  34.     parser.add_option("-a","--address",dest="address",default='localhost',help="ADDRESS for web-server",metavar="ADDRESS"
  35.     parser.add_option("-p","--port",dest="port",type="int",default=80,help="PORT for web-server",metavar="PORT"
  36.     #以上两个都是设置模块说明
  37.     (options,args)=parser.parse_args() #获取参数 
  38.     print 'options:%s,Args:%s' % (options,args) #输入获取的选项
  39.     check=check_server(options.address,options.port) #执行
  40.     print '返回的结果: %s' % check  #输入check后的结果
  41.     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脚本实现监控apache,并使用mail发送报警_python脚本

 

 

 

python脚本实现监控apache,并使用mail发送报警_python监控apache_02

 

 

 学习python心得,多看书,多写,多问,多向高手学习,在此,本人说明,本人是菜鸟