两个小问题
这是一个检测服务器某协议运行情况的脚本(地址账户密码等用“*”掩盖):
- 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下不是有计划任务么。
[解决办法]