首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

两个小疑点

2012-03-19 
两个小问题这是一个检测服务器某协议运行情况的脚本(地址账户密码等用“*”掩盖):Python code#coding:gb2312

两个小问题
这是一个检测服务器某协议运行情况的脚本(地址账户密码等用“*”掩盖):

Python code
#coding:gb2312import urllib,smtplibdef get_val(): #获取协议运行值    url = 'http://*.*.*.*:8161/admin/topics.jsp'    lines = urllib.urlopen(url).readlines()    n = lines.index('1009_1</a></td>\n')    val = lines[n+1].replace('<td>','').replace('</td>\n','')    if val == '1':        return 1      #返回1表示运行正常    elif val == '0':        return 0      #返回2表示服务停止    else:        return -1     #返回-1表示未知错误def sendmail(): #向管理员发送邮件,报告异常    fromaddr = '****@***.com'    toaddrs = fromaddr    pws='*****'    Subject = '**网关异常'    Content = '检测到协议号1009_1值为0,请重新启动该服务'    msg = '\n'.join(['From:%s'%fromaddr,'To:%s'%toaddrs,'Subject:%s'%Subject,Content])    server = smtplib.SMTP('smtpcom.*.com','25')    server.login(fromaddr,pws)    server.sendmail(fromaddr,toaddrs,msg)  if __name__ == '__main__':    if get_val() == 0:        sendmail()

两个问题:
1.收到的邮件中文都被显示为乱码,不管是在网页还是在foxmial里面,我对编码的概念比较模糊;
2.能不能把这个脚本做成windows服务:循环执行get_val(),一旦发现它返回0,立即发送邮件给管理员?用什么办法做,需要编译成exe么?

[解决办法]
用死循环运行检测
Python code
if __name__ == '__main__':    while 1:        # 检测到就发邮件,最好加个flag,免得服务挂了,不停发邮件
[解决办法]
windows下不是有计划任务么。
[解决办法]
探讨

引用:
windows下不是有计划任务么。
计划任务最频繁只能每天运行一次,我要的是实时监控,即每十分钟运行一次该脚本。

热点排行