最近学习了python简明教程,决定使用python写下关于apache的监控,对于python的强大,这里就不说了,相信关注这门语言的童鞋,都懂得,以下代码实现监控和报警,如果有更好的方法的话,一起探讨,不多说啦,上代码
[Python] 纯文本查看 复制代码 [iyunv@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('yoyo@XXX.net', 'passwod')#登陆邮箱
smtp.sendmail('yoyo@zhnews.net', 'yoyo@XXX.net', 'From: [email]yoyo@XXX.net[/email]\rTo: [email]yoyo@XXX.net[/email]\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) #退出
测试结果: [iyunv@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...... 返回的结果: 成功 [iyunv@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心得,多看书,多写,多问,多向高手学习,在此,本人说明,本人是菜鸟
|