首页 > nagios > nagios飞信报警最新版本2010.08.12

nagios飞信报警最新版本2010.08.12

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

今天在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

分类: nagios 标签: , ,
  1. 2010年9月4日19:02 | #1

    Hi there!

    登录时好像要求输入一个图片验证码,你是怎么绕过图片验证的呢?

  2. 2010年9月6日10:03 | #2

    python 用的是 V2的协议!没有图片验证~

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