免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: stionmel
打印 上一主题 下一主题

Python 监控服务并邮件通知报警程序交流 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-09-24 14:28 |只看该作者
你提出的问题已经说明了

论坛徽章:
0
12 [报告]
发表于 2008-09-24 14:29 |只看该作者
下面两段代码:
                ftp=FTP(server1)
                ftp.login(username,loginpass)
                ftp.quit()
还有
                smtpServer = 'mx0.qq.com'
                fromaddr = 'yangj@ibm.com'
                toaddrs = 'admin@qq.com'
                subject ='公司网络报警'
                txt='%s 无法到达公司网络 ' %date
                date=time.ctime()
                msg = """FROM: %s\nTO: %s\nSubject: %s\ndate: %s\n\n
                %s""" %(fromaddr,toaddrs,subject,date,txt)
                server = smtplib.SMTP(smtpServer)
                server.sendmail(fromaddr, toaddrs, msg)
                server.quit( )
都重复了两次,一个是登录FTP服务器,一个是发邮件。完全可以将其抽取成单独的函数,那样程序的结构就清晰多了。
另外,变量命名也应该注意点,尽量不要使用i, j这类意义不明确的变量名。

论坛徽章:
0
13 [报告]
发表于 2008-09-24 14:33 |只看该作者
原帖由 moonranger 于 2008-9-24 14:29 发表
下面两段代码:
                ftp=FTP(server1)
                ftp.login(username,loginpass)
                ftp.quit()
还有
                smtpServer = 'mx0.qq.com'
                froma ...

出现重复的原因是因为执行的过程中,如果出现故障并恢复后,第一段try 语句不能顺利执行,故在后重新添加了
原帖由 moonranger 于 2008-9-24 14:29 发表
                ftp=FTP(server1)
                ftp.login(username,loginpass)
                ftp.quit()

只有这样,程序才回去重新检测服务并发送服务恢复邮件。
但是又引发了一个问题,那就是恢复邮件一直在不停的发送。

[ 本帖最后由 stionmel 于 2008-9-24 14:34 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2008-09-24 14:33 |只看该作者
if i==4:
                print "failed "
                try:
                    ftp=FTP(server1)
                    ftp.login(username,loginpass)
                    ftp.quit()
                    print "chceking server"
                    i=0
                    flag=2
                    print "erroe checking flag is %d" %flag
                    print "erroe checking i is %d" %i
                except:
                    pass               
                if flag==0:
                    flag = 1
                    print "failed and send email "
这里当i==4成立  try失败,那么if flag==0成立,此时如果ftp服务回复正常那么flag依然为1。

论坛徽章:
0
15 [报告]
发表于 2008-09-24 14:36 |只看该作者
服务恰好在if i==4:
                print "failed "
                try:
         ...........................
之前
     if flag==0:
                    flag = 1
之后恢复正常将导致flag一直为1。
不知道对不对?

论坛徽章:
0
16 [报告]
发表于 2008-09-24 14:38 |只看该作者
原帖由 luffy.deng 于 2008-9-24 14:33 发表
if i==4:
                print "failed "
                try:
                    ftp=FTP(server1)
                    ftp.login(username,loginpass)
                    ftp.quit()
          ...

每次发送有之后我都把flag 置为 0 了啊

论坛徽章:
0
17 [报告]
发表于 2008-09-24 14:42 |只看该作者
哎,好不容易来了两位师兄……
谈论了半天又跑了……

论坛徽章:
0
18 [报告]
发表于 2008-09-24 14:43 |只看该作者
我说的是这种情况
if i==4:-----------成立
                print "failed "
                try:  ---------------- 此处失败接跳到except
                    ............................
                 except:
                    pass   
  ......................................服务在这里回复正常了            
                if flag==0:
                    flag = 1
                    print "failed and send email "



考虑上面的情况 会怎么样?

论坛徽章:
0
19 [报告]
发表于 2008-09-24 14:47 |只看该作者
原帖由 luffy.deng 于 2008-9-24 14:43 发表
我说的是这种情况
if i==4:-----------成立
                print "failed "
                try:  ---------------- 此处失败接跳到except
                    ............................
         ...

我们想一块去了

我正在试验中…… 请等待

论坛徽章:
0
20 [报告]
发表于 2008-09-24 14:53 |只看该作者

回复 #19 stionmel 的帖子

关于邮件发送状态标志做了一个新的定义
0 初始
1 启用故障邮件发送程序
2 故障邮件已发送
3 进入恢复发送程序
4 恢复邮件已发送


希望在眼前了……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP