免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3953 | 回复: 0
打印 上一主题 下一主题

【Cacti】实现 thold【短信/msn】报警 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 02:42 |只看该作者 |倒序浏览

===================================================================================
【系统环境】
RHEL-5.4
===================================================================================
【支持库】
需要 Glibc2.4 以上的版本;centos5 默认安装的 Glibc2.5,所不需要额外升级;
目前网上的安装文档只有 ubuntu 的,至于redhat、fedora、centos都没有相关安装文档,我在安装的过程中遇到很多库的问题,所以在这里一并给大家进行介绍;
===================================================================================
【”飞信机器人“安装过程】
飞信机器人官网地址:http://www.it-adv.net/
飞信机器人支持 linux、命令行下的飞信、完全免费(目前为止)
2009版说明及下载:http://bbs.it-adv.net/viewthread.php?tid=155&extra=page%3D1
linux: http://www.it-adv.net/fetion/downng/fetion20090406003-linux.tar.gz
win32: http://www.it-adv.net/fetion/downng/fetion20090406003-win32.rar
# wget http://www.it-adv.net/fetion/downng/fetion20090406003-linux.tar.gz
# tar zxvf fetion20090406003-linux.tar.gz
./install/
./install/cron.sh
./install/fetion
./install/fxdemo.sql
./install/plugins/
./install/plugins/inc/
./install/plugins/inc/config.inc.php
./install/plugins/inc/db.inc.php
./install/plugins/inc/session.inc.php
./install/plugins/inc/utils.inc.php
./install/plugins/plugin_buddy_data.php
./install/plugins/plugin_buddy_data.sh
./install/plugins/plugin_buddy_invite.php
./install/plugins/plugin_buddy_invite.sh
./install/plugins/plugin_handle_contact_request.php
./install/plugins/plugin_handle_contact_request.sh
./install/plugins/plugin_message.php
./install/plugins/plugin_message.sh
./install/plugins/plugin_notify.php
./install/plugins/plugin_notify.sh
./install/plugins/plugin_result.php
./install/plugins/plugin_result.sh
./install/plugins/plugin_timer.php
./install/plugins/plugin_timer.sh
./install/plugins/provider/
./install/plugins/provider/ArticleView.class.php
./install/plugins/provider/CaiLing.class.php
./install/plugins/provider/CommonPlugin.class.php
./install/plugins/provider/DiscussionCollect.class.php
./install/plugins/provider/DiscussionPost.class.php
./install/plugins/provider/DiscussionShow.class.php
./install/plugins/provider/Game24Point.class.php
./install/plugins/provider/GameKaiXinCiDian.class.php
./install/plugins/provider/GuestBook.class.php
./install/plugins/provider/HelloRobot.class.php
./install/plugins/provider/Help.class.php
./install/plugins/provider/MindTest.class.php
./install/plugins/provider/Participate.class.php
./install/plugins/provider/Vote.class.php
./install/plugins/provider/Weather.Class.php
./install/Readme.txt
./install/robots.dat
./install/sample.conf
# ll install
total 972
-rwxr-xr-x    1 root root     1570 Apr  6 11:29 cron.sh      机器人监控程序(LINUX)
-rwxr-xr-x    1 root root   405265 Apr  6 11:29 fetion       linux下主运行程序
-rwxr-xr-x    1 root root   560192 Apr  6 11:29 fxdemo.sql   机器人框架数据库(请导入到数据库)
d-w--wx-w-    4 root root     4096 Apr  6 11:29 plugins      机器人框架程序
-rwxr-xr-x    1 root root     2837 Apr  6 11:29 Readme.txt   说明文件
-rwxr-xr-x    1 root root       19 Apr  6 11:29 robots.dat   机器人账号密码(配合cron.sh)
-rwxr-xr-x    1 root root      167 Apr  6 11:29 sample.conf  演示配置文件

注:本程序需要 libACE 的支持,库请到 http://www.it-adv.net/  中下载 linux 下需要的四个文件:
# wget http://www.it-adv.net/fetion/downng/library_linux.tar.gz
# tar zxvf library_linux.tar.gz
libACE-5.6.8.so
libACE_SSL-5.6.8.so
libcrypto.so.0.9.8
libssl.so.0.9.8

把依赖的库文件和执行程序放到相同的目录
本程序的 linux 版本 基于 UBUNTU 7.10(gutsy) 开发,libc6。
一些老的发行版,如 RH9, RHES4 等可能无法正常运行,
请参照  http://bbs.it-adv.net/viewthread.php?tid=154 如何在不同版本 Linux 上运行 Binary-Only 应用包 解决。
把支持库复制到 /usr/lib/ 目录下:
查看
# ll /usr/lib |  grep libcrypto*
-rw-r--r--   1 root root  1735192 Mar   3  2009 libcrypto.a
lrwxrwxrwx   1 root root       29 Jul   18 16:58 libcrypto.so -> ../../lib/libcrypto.so.0.9.7a
-rwxr-xr-x   1 root root  1350660 Sep  17 22:42 libcrypto.so.0.9.8
# ll /usr/lib |  grep libssl*
-r--r--r--   1 root root   112944 Jun  1  12:09 libss.a
-rw-r--r--   1 root root   304144 Mar  3  2009 libssl.a
lrwxrwxrwx   1 root root       26 Jul 18  16:58 libssl.so -> ../../lib/libssl.so.0.9.7a
-rwxr-xr-x   1 root root   261612 Sep 17 22:42 libssl.so.0.9.8
lrwxrwxrwx   1 root root       15 Aug 22 21:42 libss.so -> /lib/libss.so.2
# cp lib*so* /usr/lib/
# ln -s /usr/lib/libcrypto.so.0.9.7a /usr/lib/libcrypto.so.4
# ln -s /usr/lib/libssl.so.0.9.7a /usr/lib/libssl.so.4
------------------------------------------------------------------------------------------------------------------------------------
【飞信2009依赖的其他库】
ld-2.5.so            libcom_err.so.2      libpam_misc.so.0
ld-linux.so.2        libcom_err.so.2.1    libpam_misc.so.0.81.2
ld-lsb.so.3          libcrypt-2.5.so      libpam.so.0
ld.so.conf           libcrypto.so.0.9.8   libpam.so.0.81.5
libACE-5.6.8.so      libcrypto.so.0.9.8b  libpcre.so.0
libACE_SSL-5.6.8.so  libcrypto.so.6       libpcre.so.0.0.1
libc-2.5.so          libcrypt.so.1        libproc-3.2.7.so
libcap.so            libc.so.6            libpthread-2.5.so
libcap.so.1          libnss_ldap-2.5.so   libpthread.so.0
libcap.so.1.10       libnss_ldap.so.2     libssl.so.0.9.8
libcidn-2.5.so       libpamc.so.0         libstdc++.so.6
libcidn.so.1         libpamc.so.0.81.0    libstdc++.so.6.0.8
------------------------------------------------------------------------------------------------------------------------------------
设定 lib 库配置文件
# vi /etc/ld.so.conf
# 增加一条
/usr/lib/
# 保存退出后,执行
# ldconfig
------------------------------------------------------------------------------------------------------------------------------------
【实际测试】
linux 下,请使用如下命令:
# ./fetion -h
Usage:
fetion -h
-h: help
fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
-u: Fetion user account(only supports mobile phone No.)
-p: Account password
-b: Batch file name
-d: Debug on and write logs to [mobile]-debug.log
-EN: English

登录飞信默认是中文 utf8 的,如果 linux 系统不支持 utf8 会出现乱码:我使用 english 的方式来登录。
测试帐号:15800000000
密码:qu6zhi (如果密码中含有特殊字符,请使用单引号)
# ./fetion --mobile=15800000000 --pwd=qu6zhi --to=136XXXXXXXX --msg-utf8=test4qu6zhi
SIP-C/2.0 280 Send SMS OK
T: sip:759614688@fetion.com.cn;p=2511
I: 4
Q: 1 M
已经成功收到测试短信息。

LD_LIBRARY_PATH=. ./fetion --sid=6630321 --pwd=mypwd --to=137xxxxxxxx --msg-utf8=测试
LD_LIBRARY_PATH=. ./fetion --config=sample.conf --index=1 --to=137xxxxxxxx --msg-utf8=测试
===================================================================================
-bash: Permission denied
===================================================================================
fetion 的目录结构:
.\Readme.txt: 本说明文件
.\fetion:主程序
.\sound\*.wav:各种音效文件,您可以用自己喜欢的文件替换
.\plugins\plugin_*: 插件程序,您可以修改插件以达到自己的各性化需求

登录后输入?获得帮助
****************************************************************
指令               指令说明
list               好友列表: list
sms                发送短信: sms 飞信号/手机号/编号 短信内容(换行请用\n代替)
chat               在线消息: chat 飞信号/手机号/编号 短信内容(换行请用\n代替)
status             在线状态: status online/busy/away/hidden [个性化信息]
add                添加好友: add 飞信号/手机号 申请信息 本地呢称
del                删除好友: del 飞信号/手机号/编号
invite             邀请好友: invite 手机号 您的姓名(邀请好友开通飞信)
autoaccept         自动接受: autoaccept on/off/status 自动接受加为好友申请
myinfo             修改资料: myinfo nickname/impresa 内容(呢称/心情)
help               帮助菜单: help/?
exit               退出系统: quit/exit
***************************************************************

脚本测试:
可以使用 fetion 的 -b 参数来实现批处理;

举例如下:
# vi p.sh
sms 13712312311 “msyqlserver is down”
sms 13712312312 “db1 is not running”
sms 13712312313 “warning db2 disk3 is full”
保存后执行:
./fetion -u 13713718888 -p 123456 -b p.sh
就是一次给3个 admin 发出报警信息。

还有许多插件的功能,我会在下次实际应用中写出日志和大家一起研究;
在初步接触中,发现可以实现一些交互信息的查询,比如直接向短信机器人发指令得到某台服务器的运行状态等。

【安装过程】
Cacti 的 Threshold 插件下载及安装配置

【配置过程】
1.按照 Cacti 配置 e-mail 报警配置并启用 thold
2.编辑 cacti/plugins/thold/thold-functions.php
在 thold–functions.php 查找 thold_mail($global_alert_address, ”, $subject, $msg, $file_array);行在此行下面加入:
exec("echo $subject >>/var/www/html/cacti/plugins/thold/alter.log");
exec("/var/www/html/cacti/plugins/thold/sendsms.sh");

查找 thold_mail($item["notify_extra"], ”, $subject,
$msg, $file_array);行在此行下面加入:
exec("echo $subject >>/var/www/html/cacti/plugins/thold/alter.log"); #将报警信息记录到alter.log
exec("/var/www/html/cacti/plugins/thold/sendsms.sh"); #执行sendsms.sh

备注:本人的thold安装在/var/www/html/cacti/plugins/thold/目录中,如果注释掉thold_mail,只通过短信发送报警。不注释掉thold_mail,会通过email和短信同时发送报警

thold-functions.php 生成的 alter.log 范例如下:
192.168.1.207 - Used Space - G: Label: [hdd_percent] is still above threshold of 85 with 99

编写脚本 sendsms.sh 自动调用飞信机器人发送报警
#!/bin/sh
#send sms by fetion
#Write by John.Lv
if [ ! -e "/var/www/html/cacti/plugins/thold/alert.log" ];then #判断 alter.log 是否存在
echo "Usage:alert.log does not exist"
exit
fi
if [ -n "`cat /var/www/html/cacti/plugins/thold/alert.log`" ]; then #判断 alter.log 是否有报警信息
admin="135xxxxxxxx"  #短信接收人,需在你飞信的好友列表中
echo "sms $admin "`cat /var/www/html/cacti/plugins/thold/alert.log` >>/var/www/html/cacti/plugins/thold/sms.txt #发送alter.log 中的报警信息给 admin
echo "exit" >> /var/www/html/cacti/plugins/thold/sms.txt #退出飞信
else
echo "Usage:no alert"
exit
fi
if [ -n "`cat /var/www/html/cacti/plugins/thold/sms.txt`" ] ; then
/var/www/html/cacti/plugins/thold/install/fetion -u 13512345678 -p "123456" -b /var/www/html/cacti/plugins/thold/sms.txt  -EN
#调用 fetion 发送短信,命令格式和参数说明参见:系统监控:linux命令行-飞信客户端发送免费报警短信
rm -f /var/www/html/cacti/plugins/thold/sms.txt 1>/dev/null 2>&1
rm -f /var/www/html/cacti/plugins/thold/alert.log 1>/dev/null 2>&1
else
echo "Usgae:no message to send"
exit
fi

===================================================================================
飞信机器人实现命令式互动(以Linux版本为例)
原文地址:http://www.hiadmin.com/%E9%A3%9E%E4%BF%A1%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%AE%9E%E7%8E%B0%E5%91%BD%E4%BB%A4%E5%BC%8F%E4%BA%92%E5%8A%A8%EF%BC%88%E4%BB%A5linux%E7%89%88%E6%9C%AC%E4%B8%BA%E4%BE%8B%EF%BC%89/
修改 fetion 安装目录下plugins中的plugin_message


#!/bin/bash
# $1: fetion_account
# $2: message
# Plus Description:
# When a new message arrival, the system will call this plug-in:
buddy=$1
message=$2
admin="135xxxxxxxx" #Only accept instructions sent admin
# message A Show disk space
if [[ "$message" = "A" && "$buddy" = "$admin" ]] ;then
df -h
sendback="you send command A"
# message B show network connections
elif [[ "$message" = "B" && "$buddy" = "$admin" ]];then
netstat -an | wc -l
sendback="you send command B"
# message C run shell script
elif [[ "$message" = "C" && "$buddy" = "$admin" ]];then
/root/sendMsg/1.sh
sendback="you send command C"
# message D only send message
elif [[ "$message" = "D" && "$buddy" = "$admin" ]];then
sendback="you send command D"
# other send not accept
elif [ "$buddy" = "$admin" ];then
sendbac="you send command $message。command does not accept"
else
sendback="you can not send comman"
fi
#send message $sendback
cmd="sms $buddy $sendback"
echo $cmd

保存退出

下面进行测试
测试帐号:13713718888
密码:123456 (如果密码中含有特殊字符,请使用单引号)
./fetion -u 13713718888 -p 123456 -EN

发送信息给135xxxxxxxx
sms 135xxxxxxxx “show me the command”

如果135xxxxxxxx回复短信,将自动调用插件plugin_message
如果135xxxxxxxx 回复 A 执行查看磁盘空间的命令并回复message
如果135xxxxxxxx 回复 B 执行统计网络连接数并回复message
如果135xxxxxxxx 回复 C 执行一个shell脚本并回复message
如果135xxxxxxxx 回复 D 只回复message
如果135xxxxxxxx 回复 其它 回复错误指令的信息
如果不是135xxxxxxxx 回复的信息即使是正确指令也不予执行
其中A,B,C,D可以任意指定激活执行命令或者脚本的条件,通过短信回复可以使机器人执行命令,脚本,程序,回复信息等任意操作。

===================================================================================

参考:
飞信机器人官方网站:http://www.it-adv.net/
http://www.hiadmin.com/%E7%B3%BB%E7%BB%9F%E7%9B%91%E6%8E%A7%EF%BC%9Alinux%E5%91%BD%E4%BB%A4%E8%A1%8C-%E9%A3%9E%E4%BF%A1%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%91%E9%80%81%E5%85%8D%E8%B4%B9%E6%8A%A5%E8%AD%A6%E7%9F%AD%E4%BF%A1/
http://www.hiadmin.com/cacti%E5%AE%9E%E7%8E%B0%E7%9F%AD%E4%BF%A1%E6%8A%A5%E8%AD%A6/
给 cacti 插件 thold 加上飞信和msn报警功能:http://www.hiadmin.com/category/workshop/sms/
谨慎使用:成功将飞信2009(fetion20090318001-linux)移植到rhel4:http://xok.la/2009/03/fetion_2009_to_rhel4_linux4.html
Net-SMS-PChome:http://people.debian.org.tw/~chihchun/2008/02/29/net-sms-pchome-updated/

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP