由于自己是负责海外项目,常常会遇到一些问题,最近被系统时间与mysql时间不在一个时区,而坑了自己,一般修改了系统时区之后,MySQL必须重启,不然MySQL时区是不对的,会导致数据全部都是错的~~~,哎,只有坑到了自己,才会想到要去避免这种事情再次出现,所以用python写了一个简单判断时区的脚本,时区不对并邮件发出来,大家参考参考,详情如下:
1、脚本实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<code>#!/usr/bin/env python</code>
<code># coding=utf8</code>
<code># auther:kuangl</code>
<code># This is system time and sql time diff</code>
<code>from</code> <code>datetime </code><code>import</code> <code>*</code>
<code>import</code> <code>os,sys,socket,fcntl,struct</code>
<code>import</code> <code>MySQLdb</code>
<code>import</code> <code>smtplib</code>
<code>from</code> <code>email.mime.multipart </code><code>import</code> <code>MIMEMultipart</code>
<code>from</code> <code>email.mime.base </code><code>import</code> <code>MIMEBase</code>
<code>from</code> <code>email.mime.text </code><code>import</code> <code>MIMEText</code>
<code>reload</code><code>(sys)</code>
<code>sys.setdefaultencoding(</code><code>'utf8'</code><code>)</code>
<code>'''定义发送邮件函数'''</code>
<code>def</code> <code>sendmail(html,emailaddress,mailSubject,from_address</code><code>=</code><code>"[email protected]"</code><code>):</code>
<code> </code><code>mail_list</code><code>=</code><code>emailaddress.split(</code><code>","</code><code>)</code>
<code> </code><code>msg</code><code>=</code><code>MIMEMultipart()</code>
<code> </code><code>msg[</code><code>'Accept-Language'</code><code>]</code><code>=</code><code>'zh-CN'</code>
<code> </code><code>msg[</code><code>'Accept-Charset'</code><code>]</code><code>=</code> <code>'ISO-8859-1,utf-8'</code>
<code> </code><code>msg[</code><code>'From'</code><code>]</code><code>=</code><code>from_address</code>
<code> </code><code>msg[</code><code>'to'</code><code>]</code><code>=</code><code>";"</code><code>.join(mail_list)</code>
<code> </code><code>msg[</code><code>'Subject'</code><code>]</code><code>=</code><code>mailSubject.decode(</code><code>"utf-8"</code><code>)</code>
<code> </code><code>txt</code><code>=</code><code>MIMEText(html,</code><code>'html'</code><code>,</code><code>'utf-8'</code><code>)</code>
<code> </code><code>txt.set_charset(</code><code>'utf-8'</code><code>)</code>
<code> </code><code>msg.attach(txt)</code>
<code> </code><code>smtp</code><code>=</code><code>smtplib.SMTP(</code><code>"mail.test.com"</code><code>)</code>
<code> </code><code>smtp.sendmail(msg[</code><code>"From"</code><code>],mail_list,msg.as_string())</code>
<code> </code><code>smtp.close()</code>
<code>'''查看本机hostname'''</code>
<code>hostname</code><code>=</code><code>socket.gethostname()</code>
<code>print</code> <code>hostname</code>
<code>'''查看本机IP地址'''</code>
<code>def</code> <code>get_ip_address(ifname):</code>
<code> </code><code>s</code><code>=</code><code>socket.socket(socket.AF_INET,socket.SOCK_DGRAM)</code>
<code> </code><code>return</code> <code>socket.inet_ntoa(fcntl.ioctl(</code>
<code> </code><code>s.fileno(),</code>
<code> </code><code>0x8915</code><code>,</code>
<code> </code><code>struct.pack(</code><code>'256s'</code><code>,ifname[:</code><code>15</code><code>])</code>
<code> </code><code>)[</code><code>20</code><code>:</code><code>24</code><code>])</code>
<code>ip_add </code><code>=</code> <code>get_ip_address(</code><code>'eth0'</code><code>)</code>
<code>print</code> <code>ip_add</code>
<code>'''查看系统时间'''</code>
<code>nowtime </code><code>=</code> <code>datetime.now()</code>
<code>daytime </code><code>=</code> <code>nowtime.strftime(</code><code>'%Y-%m-%d %H:%M'</code><code>)</code>
<code>print</code> <code>'system time time:'</code><code>, daytime</code>
<code>'''查看数据库时间'''</code>
<code>pwd</code><code>=</code><code>'111133334444'</code>
<code>SQL</code><code>=</code><code>'select now()'</code>
<code>def</code> <code>mysql_connect(sql,host):</code>
<code> </code><code>try</code><code>:</code>
<code> </code><code>conn</code><code>=</code><code>MySQLdb.connect(host</code><code>=</code><code>'127.0.0.1'</code><code>,user</code><code>=</code><code>'rd'</code><code>,passwd</code><code>=</code><code>pwd,port</code><code>=</code><code>3306</code><code>)</code>
<code> </code><code>cur</code><code>=</code><code>conn.cursor()</code>
<code> </code><code>cur.execute(sql)</code>
<code> </code><code>result</code><code>=</code><code>cur.fetchall()</code>
<code> </code><code>cur.close()</code>
<code> </code><code>conn.close()</code>
<code> </code><code>return</code> <code>result</code>
<code> </code><code>except</code> <code>MySQLdb.Error,e:</code>
<code> </code><code>print</code> <code>"Mysql Error %d: %s"</code> <code>%</code> <code>(e.args[</code><code>0</code><code>],e.args[</code><code>1</code><code>])</code>
<code>server_result</code><code>=</code><code>mysql_connect(sql</code><code>=</code><code>SQL,host</code><code>=</code><code>'127.0.0.1'</code><code>)</code>
<code>sql_gettime</code><code>=</code><code>server_result[</code><code>0</code><code>][</code><code>0</code><code>]</code>
<code>SQLTime</code><code>=</code><code>sql_gettime.strftime(</code><code>'%Y-%m-%d %H:%M'</code><code>)</code>
<code>print</code> <code>'SQL server time:'</code><code>,SQLTime</code>
<code>''' 定义邮件参数'''</code>
<code>Content</code><code>=</code> <code>'Dear ALL: <br> &nbsp;&nbsp; '</code> <code>+</code> <code>ip_add </code><code>+</code> <code>' , System and Database time error, <br> &nbsp;&nbsp; System time is : '</code><code>+</code> <code>daytime </code><code>+</code><code>' <br> &nbsp;&nbsp; Database time is : '</code> <code>+</code> <code>SQLTime </code><code>+</code> <code>' <br> &nbsp;&nbsp; Please check all time! <br> &nbsp;&nbsp; <br> &nbsp;&nbsp; Friendly reminder,Please note!'</code>
<code>Subject</code><code>=</code> <code>'[监控][海外时区监控]['</code> <code>+</code> <code>hostname </code><code>+</code> <code>']System and Database time error'</code>
<code>''' 判断时间是否相等'''</code>
<code>if</code> <code>daytime </code><code>=</code><code>=</code> <code>SQLTime:</code>
<code> </code><code>print</code> <code>"system and sql time is OK, not sednemail"</code>
<code>else</code><code>:</code>
<code> </code><code>print</code> <code>"system and sql time is Fail,Start email to all"</code>
<code> </code><code>sendmail(html</code><code>=</code><code>Content,emailaddress</code><code>=</code><code>'[email protected]'</code><code>,mailSubject</code><code>=</code><code>Subject)</code>
2、测试结果
<a href="http://s3.51cto.com/wyfs02/M01/58/DB/wKiom1S-Z5zRt5mTAADj3H9YT60609.jpg" target="_blank"></a>
本文转自 kuangling 51CTO博客,原文链接:http://blog.51cto.com/kling/1606401