[心得] 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