由于自己是負責海外項目,常常會遇到一些問題,最近被系統時間與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