google talk 的php api 脚本xmpphp
本文可自由转载,但请遵循“署名-非商业用途-保持一致”的创作共用协议。 永久链接:JoeCen's 小猫窝-----------------------------
下周打算将cacti的整套脚本重写,让其真正能成为一个大众化的东西。初步的想法是做成一个插件化和模块化的脚本,使用的语言是php、perl和一点点的shell。
其中里面包含一个报警的模块,我们自己有popo的接口,但是如果给其他人用的话,还是需要使用msn或者gtalk的接口。个人比较倾向于gtalk,毕竟比较方便,但是考虑到使用msn的人比较多,还是做成可以选择的吧。
msn的接口我以前在家里面放一台PC作服务器的时候用过,用来记录adsl多久换一次IP,当电信adsl换IP的时候就会及时的通知到我。那么现在要找的就是google talk的api了。google talk使用xmmp协议,现在连新popo都支持gtalk了,api程序应该很容易找到,不过我要的是php的。
php 的google talk api在code.google.com上面就有:xmpphp.
使用非常简单,只需要include一个php文件,在调用几个函数就可以了:
<?php
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('someguy@someserver.net', 'This is a test message!');
$conn->disconnect();
?>
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('someguy@someserver.net', 'This is a test message!');
$conn->disconnect();
?>
有点要注意的是,message的中文必须要用UTF-8格式的,用GBK会变成乱码,linux可以使用iconv或者enca来转换即可。
万事具备,只欠东风。
June 1st, 2008 at 3:13 pm Quote
博主这个系统开发的如何了?是否会开源呢?
June 2nd, 2008 at 4:25 pm Quote
当然会开源,不过最近比较忙,可能要再晚一点才能完成。
June 3rd, 2008 at 12:27 pm Quote
joecen 也经常去HK啊,我也经常过去转转数码产品!也准备去淘一个本本回来用,好多同事都在HK拿的T60,国内一万多,HK才9K多一点
June 4th, 2008 at 1:32 pm Quote
香港的数码产品的确比较便宜。我也不是经常过去啦,呵呵。
June 6th, 2008 at 9:43 am Quote
非常期待你的这个系统的出来哦!现在的cacti 只是对于监控对像的后期分析非常有好处,有时发现报警功能不太好,实时性不强!并且监控对像修改IP后,不能自动恢复!
June 6th, 2008 at 4:41 pm Quote
恐怕不是你想象中的东西。
我想做的是一个no snmp的cacti数据接口,使用http来代替snmp。
实时的报警非常有必要的,IM的报警我会做进去。至于换IP,我就不知道你是什么意思了。
另外恐怕你要失望的是,这个月我恐怕都没有太多时间完成这个事情了。
June 21st, 2008 at 3:34 pm Quote
由于服务器经常受到攻击,所以我们服务器经常需要更换其它线路的IP,所以修改IP后,SNMP就获取不到数据了!
其实你写的这个http的接口,有点类似新浪那个张宴的那个监控方式吧?
这种方式也非常好!
June 23rd, 2008 at 12:54 pm Quote
我不知道张宴那个方式是怎么样的。
经常要修改IP的话,你可以用hostname而不是直接使用IP呀!
你只要在cacti所在的机器上面的/etc/hosts上面指定hostname和ip的对应关系就可以了。
如果你有自己的私有dns,也可以在dns里面定义自己的对应关系,然后cacti的机器指定使用这个私有dns就可以了。
July 9th, 2008 at 6:38 pm Quote
joecen
我想问一下,你这个功能,是否可以迁移到nagios中将报警信息发到MSN上?