[心得] Cacti+Line群組告警

作者: xxoo1122 (一個連IE6都能相容的男人)   2014-10-25 13:13:02
前陣子小弟有簡介過如何將Cacti告警訊息如何透過簡訊發送,
延續這個主題,今天來簡介如何透過LINE來發送告警訊息.
其實LINE並沒有提供API接口,拜國外的一位大神所賜
他用了python寫了LINE的api?模擬器?
第一步:你得先有LINE的帳號,如果是公司要用的帳號可以透過BlueStacks
App player,安裝LINE後可以使用Facebook的帳號申請LINE帳號,
這個部分我就不多說明了,網路上應該很多教學.
第二步:下載大神的程式
https://github.com/carpedm20/LINE
使用手冊
http://carpedm20.github.io/line/
但是最新版的程式被LINE公司要求移除一些code所以無法使用賬號密碼登入
只能用authtoken登入,所以我們改用舊版一點的程式
https://pypi.python.org/pypi/line/0.0.8
第三步:把程式下載後解壓縮,安裝方式非常簡單 python setup.py install
第四步:安裝完畢後,line的資料夾中會有__init__.py cli.py client.py models.py
這幾個文件,接下來我們要來取得authtoken的值,在終端機視窗輸入
#python
>>>from line import LineClient, LineGroup, LineContact
>>>client = LineClient("xxxx@gmail.com", "xxxxxx")
Enter PinCode '9023' to your mobile phone in 2 minutes
>>> print client.authToken
DLfeGYOfOR2EEMZSa4nd.qM0Hnke6HQm1dJ3gTMXiFq.j2PE6TLIx2HlBp4Sg1x
這時候authtoken值就出來了
第五步:#vi cacti.py 我們建立一個可以發訊息的script,authToken就填入剛剛
取得的值,使用client.groups[].sendMessage()另外我這邊使用sys.argv
傳值,就可以發訊息到你指定的群組還有更多方式可以使用,請參見使用手冊
from line import sys, LineClient, LineGroup, LineContact
try:
client = LineClient(authToken="DLGXrEOTSTUTFjKUQER1.ENllx8g5EM=")
except:
print "Login Failed"
while True:
client.groups[0].sendMessage(sys.argv[1])
break
第六步:再來修改thold_functions.php這隻程式,找到function thold_mail
移動到function 的最尾端可以看到return ''; ,在return '';前加入
$sms = shell_exec('python /usr/share/cacti/plugins/thold/line/line/
cacti.py '.escapeshellarg($message).'');
完成圖
http://ppt.cc/bgso
作者: punding (新拍子 新節奏)   2014-10-25 13:18:00
推推
作者: luvboa ((  ̄ c ̄)y▂ξ)   2014-10-25 13:32:00
實用大推
作者: a516884 (豆花奶茶)   2014-10-25 15:55:00
高手隱藏在凡間XD
作者: trumpete (流浪)   2014-10-25 16:24:00
實用大推 更大推分享請問IE6 能相容 表示這個男人很......? 老? XD
作者: justfor1221 (生蛋)   2014-10-25 17:52:00
這不推不行了!
作者: niker168 (~尼克~)   2014-10-27 03:20:00
推一個
作者: luvboa ((  ̄ c ̄)y▂ξ)   2014-10-29 17:00:00
測試成功,感謝分享!!
作者: shadowknight (~~)   2014-11-02 16:50:00
超實用

Links booklink

Contact Us: admin [ a t ] ucptt.com