首页 > nagios > nagios利用飞信pyfetion报警最新

nagios利用飞信pyfetion报警最新

2010年8月4日 eric 发表评论 阅读评论

nagios利用移动飞信报警,可是移动飞信总是经常换协议,导致我们这些利用飞信报警的工程师很恼火,可是没有办法,许多用飞信的朋友,在2010年7月25号后,飞信又是不能发信息了,因为飞信的协议又有些变化:

飞信2010在7月25日未升级之前支持通过下面的URL为完成SSI认证:

https://uid.fetion.com.cn/ssiportal/SSIAppSignIn.aspx?mobileno=13888888888&pwd=PASSWORD

这里的PASSWORD为明文密码
移动系统切换以后这种方式不再支持,新的认证采用下面的方式:

https://uid.fetion.com.cn/ssiportal/SSIAppSignInV2.aspx?mobileno=13888888888&digest=PASSWORD

我以前写的文章:
nagios msn 飞信PHP类API 报警
http://deidara.blog.51cto.com/400447/159290

这种方法已经不能在报警了,于是我就想到了pyfetion,下载后发现,它是以文本框模式登fetion,如

果想配合nagios来报警,必须要修改脚本。下载tanjelly修改版本

http://code.google.com/p/pytool/issues/detail?id=18#c6

http://pytool.googlecode.com/issues/attachment?aid=9026163495408742977&name=PyFetion_v0.3.zip&token=74d6c28998e6b7720875a300151f4cb3

下载后得到两个文件:
fetion.py
PyFetion.py

想要nagios 报错之后,短信报警,需要下面几步:

1.修改fetion.py,让其登录后,直接发输入的消息。所以找到他登录信息

nagios $> vim fetion.py

#找到 mobile_no = argv[1]

def main(argv=None):
    if len(argv) > 2:
        mobile_no = argv[1]
        passwd    = argv[2]

改为:

def main(argv=None):
    if len(argv) > 2:
        mobile_no = argv[1]
        passwd    = argv[2]
        sendto    = argv[3]  #发给谁(必须是好友)
         message   = argv[4]  #发送的报警信息

#找到 printl(“登录成功”)

finally:
        t.stop()

    if ret:
        printl("登录成功")

    else:
        printl("登录失败")
        return 1

改为:

finally:
        t.stop()

    if ret:
       phone.send_sms(toUTF8(message))             #发送给自己一份,不需要的话可以注释掉!
        phone.send_sms(toUTF8(message),sendto)      #发送报警给好友,不需要的话可以注释掉!
        printl("发送成功")
           return 1				#跳出,不需要登录text文本登陆框
    else:
        printl("登录失败")
        return 1

保存退出

2.测试发送消息!给自己,和好友发送消息!

nagios $> ./fetion.py 1361103xxx password  13800XXXXXX  test

3.只给自己发送消息

nagios $> ./fetion.py 1361103xxx password none test

# none 就是不给好友发送,如果你不想输入 那么你可以把 fetion.py 里的 phone.send_sms(toUTF8(message),sendto) 注释掉或者删掉那么测试就可以
# nagios $> ./fetion.py 1361103xxx password test
# 不需要在输入 none 了。

4.创建 shell 脚本,发送报警。(开始的时候直接用python脚本放到 commands.cfg里面,总是没有任何反应,不报错,任何log信息都没有。)

nagios $> vim /usr/local/nagios/libexec/sms
#!/bin/bash
# script name : sms
# qq: 277057817
# url:www.nginxs.com
cd /usr/local/nagios/libexec
if [ $# -ne 5 ];then
        phone="$1"
        passwd="$2"
        sendto="$3"
        msg="$4"
/usr/bin/python /usr/local/nagios/libexec/fetion.py "$phone" "$passwd" "$sendto" "$msg"
fi

##如果你注释掉了 fetion.py 里的 phone.send_sms(toUTF8(message),sendto)。也就是不给好友发报警信息只给自己发使用下面脚本

#!/bin/bash
# script name : sms
# qq: 277057817
# url:www.nginxs.com
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

5.修改 templates.cfg 添加:

nagios $> vim /usr/local/etc/objects/templates.cfg
define contact{
name                            generic-contact
service_notification_period     24x7
host_notification_period        24x7
service_notification_options    w,u,c,r,f,s
host_notification_options       d,u,r,f,s
service_notification_commands   notify-service-by-email,notify-service-by-sms
host_notification_commands      notify-host-by-email,notify-host-by-sms
register                        0
}

6.修改commands.cfg 添加:

define command{
command_name    notify-host-by-sms
command_line    $USER1$/sms 1361103xxxx password 1380010XXXX "Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$'"
}

define command{
command_name    notify-service-by-sms
command_line    $USER1$/sms 1361103xxxx password 1380010XXXX "Host $HOSTSTATE$ Address $HOSTADDRESS$ Service $SERVICEDESC$ State $SERVICESTATE$ on $TIME$"
}

##如果你注释掉了 fetion.py 里的 phone.send_sms(toUTF8(message),sendto)。也就是不给好友发报警信息只给自己发使用下面配置:

define command{
command_name    notify-host-by-sms
command_line    $USER1$/sms 1361103xxxx password "Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$'"
}

define command{
command_name    notify-service-by-sms
command_line    $USER1$/sms 1361103xxxx password "Host $HOSTSTATE$ Address $HOSTADDRESS$ Service $SERVICEDESC$ State $SERVICESTATE$ on $TIME$"
}

附件fetion python:只给自己发报警信息

to_me.tar.gz

给好友发报警信息和给自己发报警信息

to_friend.tar.gz

转载请注明:文章转载自:Eric's linux and nginx! (http://www.nginxs.com)
本文地址:http://www.nginxs.com/linux/213.html

分类: nagios 标签: , ,
  1. 2010年8月26日07:57 | #1

    A+ would read again

  2. 2010年8月26日16:16 | #2

    ok thank u .you are the man

您必须在 登录 后才能发布评论.