nagios飞信报警最新版本2010.08.12
今天在http://code.google.com/p/pytool/ 逛的时候,发现pyfetion又有些更新,支持配置文件,同时也支持命令方式给朋友发信。同时增加了pyDes 模块,用来加密的吧,
首先 安装 pyDes 模块
nagios $> wget http://cdnetworks-kr-2.dl.sourceforge.net/project/pydes/pydes/2.0.1/pyDes-2.0.1.zip nagios $> unzip pyDes-2.0.1.zip nagios $> cd pyDes-2.0.1 nagios $> python setup.py install
pyfetion登录方式
第一种load配置文件
nagios$> ./fetion.py Get config error! [Errno 2] No such file or directory: './fetion.conf' 手机号/飞信号:1361103XXXX 口 令:xxxxx ---------> ------------------------基于PyFetion的一个CLI飞信客户端------------------------ 命令不区分大小写中括号里为命令的缩写 help[?] 显示本帮助信息 ls[l] 列出好友列表 status[st] 改变飞信状态 参数[0隐身 1离开 2忙碌 3在线] 参数为空显示自己的状态 msg[m] 发送消息 参数为序号或手机号 使用quit退出 sms[s] 发送短信 参数为序号或手机号 使用quit退出 参数为空给自己发短信 find[f] 查看好友是否隐身 参数为序号或手机号 add[a] 添加好友 参数为手机号或飞信号 del[d] 删除好友 参数为手机号或飞信号 cls[c] 清屏 save 保存当前登录用户和密码 quit[q] 退出对话状态 exit[x] 退出飞信 ##输入 save 保存当前登录用户和密码 PyFetion:save 保存配置成功 PyFetion:exit 退出输入状态 停止接收消息 停止发送心跳 飞信退出
#—————————————–#
再次登录:
nagios $> ./fetion.py -------------> ------------------------基于PyFetion的一个CLI飞信客户端------------------------- 命令不区分大小写中括号里为命令的缩写 help[?] 显示本帮助信息 ls[l] 列出好友列表 status[st] 改变飞信状态 参数[0隐身 1离开 2忙碌 3在线] 参数为空显示自己的状态 msg[m] 发送消息 参数为序号或手机号 使用quit退出 sms[s] 发送短信 参数为序号或手机号 使用quit退出 参数为空给自己发短信 find[f] 查看好友是否隐身 参数为序号或手机号 add[a] 添加好友 参数为手机号或飞信号 del[d] 删除好友 参数为手机号或飞信号 cls[c] 清屏 save 保存当前登录用户和密码 quit[q] 退出对话状态 exit[x] 退出飞信 PyFetion:
不用再输入帐号密码了 !!
第二中登录方式
nagios $> ./fetion.py 1361103XXXX password
第三种登录方式是以命令行方式登录后给好友发送信息!
nagios $> ./fetion.py 1361103XXXX password 1381000XXXX test
三种登录方式的代码如下:
def main(argv=None):
if not argv:
return
global config_file
mobile_no = ''
passwd = ''
target = None
msg = ''
config_file = argv[0].replace('fetion.py', config_file)
config = FetionConfig()
if config.Load(config_file):
mobile_no = config.loginuser
passwd = config.loginpass
if len(argv) == 3:
mobile_no = argv[1]
passwd = argv[2]
elif len(argv) == 5:
mobile_no = argv[1]
passwd = argv[2]
target = argv[3].lower()
msg = argv[4]
第一种是load配置文件方式登录。
第二种是输入手机号,和密码方式登录
第三种方式是 输入 自己的手机号、密码,好友手机号,和信息,以命令行的方式发送消息。(对我的提问,在这个版本上算是回答吧·呵呵)
第三种方式足以满足 nagios fans 了,可能有些兄弟要说了,没有办法给自己发消息啊·其实很简单。看下面的代码:
if ret:
printl("登录成功")
else:
printl("登录失败")
return 1
if target and target.isdigit():
if len(target) == 11:
ret = phone.send_sms(toUTF8(msg), 'tel:%s' % target)
else:
ret = phone.send_msg(toUTF8(msg), 'sip:%s@fetion.com.cn' % target)
if ret:
printl("消息发送成功")
else:
printl("消息发送失败")
printl("飞信退出")
return 1
这是 三种登录方式 成功的返回值·以第三种方式登录成功后 发发送消息,陈功后,return 1 退出·如果给自己发,稍加改动就可以了:
if target and target.isdigit():
if len(target) == 11:
#ret = phone.send_sms(toUTF8(msg), 'tel:%s' % target)
ret = phone.send_sms(toUTF8(msg))
else:
ret = phone.send_msg(toUTF8(msg), 'sip:%s@fetion.com.cn' % target)
if ret:
printl("消息发送成功")
else:
printl("消息发送失败")
printl("飞信退出")
return 1
这样就可以给自己发了·如果想同时给自己发信息,也给好友发信息,把那个 注视文件打开就好了~
下面是重点!
配置文件登录方式吸引了我·呵呵密码是经过加密的,不会明文显示在配置文件上所以我就又改动了一下。
def main(argv=None):
if not argv:
return
global config_file
mobile_no = ''
passwd = ''
target = None
msg = ''
config_file = argv[0].replace('fetion.py', config_file)
config = FetionConfig()
if config.Load(config_file):
mobile_no = config.loginuser
passwd = config.loginpass
msg = argv[1] #改动的地方,增加一个信息变量
if len(argv) == 3:
mobile_no = argv[1]
passwd = argv[2]
elif len(argv) == 5:
mobile_no = argv[1]
passwd = argv[2]
target = argv[3].lower()
msg = argv[4]
把登录陈功地方 改动一下 :
#if ret: #注视掉判断登录成功与否。的打印信息!
# printl("登录成功")
# else:
# printl("登录失败")
# return 1
ret = phone.send_sms(toUTF8(msg)) #增加 登陆成功后的事件·登录成功后,发送消息·以及退出!
printl("消息发送成功")
printl("飞信退出")
return 1
联系我上篇的文章,我们改动下 nagios 报警的脚本 sms
nagios $> vim /usr/local/nagios/libexec/sms #!/bin/bash cd /usr/local/nagios/libexec if [ $# -ne 4 ];then phone="$1" passwd="$2" msg="$3" /usr/bin/python /usr/local/nagios/libexec/fetion.py "$phone" "$passwd" "$msg" fi
现在只需要一个信息的变量了,因为手机号和密码都存在了配置文件上。我们修改:
#!/bin/bash cd /usr/local/nagios/libexec if [ $# -ne 2 ];then msg="$3" /usr/bin/python /usr/local/nagios/libexec/fetion.py "$msg" fi
然后修改
nagios $> vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name notify-host-by-sms
command_line $USER1$/sms 1361103XXXX XXXXXXXX "Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$'"
}
define command{
command_name notify-service-by-sms
command_line $USER1$/sms 1361103XXXX XXXXXXXX "Host $HOSTSTATE$ Address $HOSTADDRESS$ Service $SERVICEDESC$ State $SERVICESTATE$ on $TIME$"
}
改为:
define command{
command_name notify-host-by-sms
command_line $USER1$/sms "Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$'"
}
define command{
command_name notify-service-by-sms
command_line $USER1$/sms "Host $HOSTSTATE$ Address $HOSTADDRESS$ Service $SERVICEDESC$ State $SERVICESTATE$ on $TIME$"
}
重启 nagios 服务
nagios $> /etc/init.d/nagios restart
注意一点是,如果你要使用配置文件登录发送报警信息,一定要先要用原版本登录,保存配置文件后。然后在用我修改的版本,或者自己修改一下也可以!我把原版和我的版本都发上去,
PS:一些保守的人注意了,本脚本只支持 python 2.5 版本以上,python 2.4 会报错~
飞信原本 www.nginxs.com/download/fetion.tar.gz
eric修改版本 www.nginxs.com/download/eric_fetion.tar.gz
转载请注明:文章转载自:Eric's linux and nginx! (http://www.nginxs.com)
本文地址:http://www.nginxs.com/linux/225.html
Hi there!
登录时好像要求输入一个图片验证码,你是怎么绕过图片验证的呢?
python 用的是 V2的协议!没有图片验证~