這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
linux:monitor:zabbix_alert [2014/03/23 13:25] ali88 建立 |
linux:monitor:zabbix_alert [2014/03/23 18:00] (目前版本) ali88 |
||
---|---|---|---|
行 8: | 行 8: | ||
#easy_install rfc3339 | #easy_install rfc3339 | ||
#easy_install google-api-python-client</code> | #easy_install google-api-python-client</code> | ||
+ | {{:linux:monitor:google_calendar.png?300|}} | ||
+ | =====申請使用Google API金鑰===== | ||
+ | 因為是使用Google API,需要到 https://code.google.com/apis/console/ (使用google帳號登入)申請API金鑰。 | ||
+ | - 先到 service 開啟 calendar api (舊版控制台){{:linux:monitor:api_services.png?700|}} | ||
+ | - 再到 API Access, 就可以找到程式所需的資訊(舊版控制台)。分別是Client ID: Client secret: API key:等項目{{:linux:monitor:api_apiaccess.png?300|}} | ||
+ | - 用python撰寫 發送訊息到API的程式,利用上面查到Client ID: Client secret: API key分別填入以下程式內 gapi_calendar.py<code>#!/usr/bin/python | ||
+ | # -*- coding: utf8 -*- | ||
+ | import gflags | ||
+ | import httplib2 | ||
+ | import sys | ||
+ | import time | ||
+ | from apiclient.discovery import build | ||
+ | from oauth2client.file import Storage | ||
+ | from oauth2client.client import OAuth2WebServerFlow | ||
+ | from oauth2client.tools import run | ||
+ | from rfc3339 import rfc3339 | ||
+ | FLAGS = gflags.FLAGS | ||
+ | FLOW = OAuth2WebServerFlow( | ||
+ | client_id='Your Client ID', | ||
+ | client_secret='Your Client secret', | ||
+ | scope='https://www.googleapis.com/auth/calendar', | ||
+ | user_agent='APIProject/0.1') | ||
+ | |||
+ | # To disable the local server feature, uncomment the following line: | ||
+ | gflags.FLAGS.auth_local_webserver = False | ||
+ | |||
+ | # If the Credentials don't exist or are invalid, run through the native client | ||
+ | # flow. The Storage object will ensure that if successful the good | ||
+ | # Credentials will get written back to a file. | ||
+ | |||
+ | storage = Storage('/var/lib/zabbixsrv/alertscripts/calendar.dat') ==>(網址進行授權完成後,會在此路徑下產生calendar.dat) | ||
+ | credentials = storage.get() | ||
+ | if credentials is None or credentials.invalid == True: | ||
+ | credentials = run(FLOW, storage) | ||
+ | |||
+ | # Create an httplib2.Http object to handle our HTTP requests and authorize it | ||
+ | # with our good Credentials. | ||
+ | http = httplib2.Http() | ||
+ | http = credentials.authorize(http) | ||
+ | |||
+ | # Build a service object for interacting with the API. Visit | ||
+ | # the Google APIs Console | ||
+ | # to get a developerKey for your own application. | ||
+ | service = build(serviceName='calendar', version='v3', http=http, | ||
+ | developerKey='Your API key') | ||
+ | |||
+ | #zb_sendto = 日曆ID ,zb_title = 主旨 , zb_body= 說明 | ||
+ | zb_sendto= sys.argv[1] | ||
+ | zb_title= sys.argv[2] | ||
+ | zb_body= sys.argv[3] | ||
+ | sttime = time.time() | ||
+ | endtime = time.time()+60*60 | ||
+ | event = { | ||
+ | 'summary': zb_title, | ||
+ | 'location': 'QY_office', | ||
+ | 'description': zb_body, | ||
+ | 'start': { | ||
+ | 'dateTime': rfc3339(sttime), | ||
+ | 'timeZone': 'Asia/Taipei' | ||
+ | }, | ||
+ | 'end': { | ||
+ | 'dateTime': rfc3339(endtime), | ||
+ | 'timeZone': 'Asia/Taipei' | ||
+ | }, | ||
+ | "reminders": { | ||
+ | "useDefault": False, | ||
+ | "overrides": [ | ||
+ | { | ||
+ | "method": "email", | ||
+ | "minutes": 0 | ||
+ | }, | ||
+ | { | ||
+ | "method": "popup", | ||
+ | "minutes": 0 | ||
+ | }, | ||
+ | { | ||
+ | "method": "sms", | ||
+ | "minutes": 0 | ||
+ | }, | ||
+ | ] | ||
+ | }, | ||
+ | } | ||
+ | |||
+ | created_event = service.events().insert(calendarId=zb_sendto, body=event).execute() | ||
+ | print created_event['id'] | ||
+ | </code> | ||
+ | - 執行此程式 參數1:日曆ID(google mail ) 2.標題 3.說明)<code>#python gapi_calendar.py [email protected] TilteTest88 contextTest88</code> | ||
+ | * 使用此程式產生的**網址進行授權** 要求是否允許 使用google API 發送訊息到日曆ID{{:linux:monitor:api_cmd.png?700|}}{{:linux:monitor:api_htmlauth.png?600|}}{{:linux:monitor:api_htmlauthcode.png?300|}} | ||
+ | * 貼上授權碼後完成授權 , 會在目錄下產 calendar.dat{{:linux:monitor:api_cmd2.png?700|}} | ||
+ | * 送出events 後會print event id ,就完成了。{{:linux:monitor:api_cmd3.png?700|}}{{:linux:monitor:google_calendar.png?700|}} | ||
+ | |||
+ | ======參考資料====== | ||
+ | * [[http://jerry2yang.wordpress.com/2012/02/06/ubuntu-install-google-calendar-api-with-python/|Ubuntu install google calendar api with python]] | ||
+ | * [[https://www.evernote.com/shard/s112/sh/0db8e94a-8c19-4272-b1b8-392c4a623bb6/063809b3590dd7ea095cc0fd87a95a27?noteKey=063809b3590dd7ea095cc0fd87a95a27¬eGuid=0db8e94a-8c19-4272-b1b8-392c4a623bb6|JasonW同事-使用GOOGLE 日曆功能 發送SMS]] | ||
+ | * [[http://www.openfoundry.org/tw/tech-column/8536-introduction-of-python-extension-management-tools|Python 套件管理程式簡介]] |