比较有意思的飞信(fetion)机器人 for linux

fetion虽然没有qq使用广泛,但是由于和移动短信的整合能为我们提供qq没有的应用方式,当然,最重要的是目前飞信to短信之间是免费的午餐。当然这种免费短信是有限制的,即必须先经过双方fetion互加好友确认,这样就避免了利用fetion进行群发等。

目前linux上飞信的使用有两种。
一种是普通的GUI客户端 LibFetion。 http://www.libfetion.cn/
还有一种是fetion机器人,基于命令行模式。http://www.it-adv.net/

作为运维来讲,特别需要一种实时的报警和查询手段,我们一直都使用zabbix来监控服务器的应用,普通的预警方式是email,作为实时提醒手段还是差了些;监控方式是web登陆浏览,在空间上也有一定的限制。通过fetion机器人,就可以达到短信方式的实时提醒和查询功能了。

安装fetion机器人很简单,不过好像需要gcc3.4的库,基本命令如下:

    fetion -h
        -h: help
    fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
    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

# fetion -u 1360xxxx383 -p 123456  登陆机器人
>> sms 13811111111 "hello"  给飞信好友发送短信
# fetion -u 1360xxxx383 -p 123456 -b send.file  调用send.file文件发送

可以写php写一个socker发送的脚本来支持类似zabbix的监控软件,实现预警功能。

#!/usr/bin/php
<?php
$msg=$argv[1];
$svc_port = 40000;  //默认40000
$command = "sms 1360xxxx383 ".$msg;
$fetion_svc_socket = socket_create(AF_INET,SOCK_DGRAM,0);
@socket_sendto($fetion_svc_socket,$command,strlen($command),0,'127.0.0.1', $svc_port);
socket_close($fetion_svc_socket);
?>

# phpfetion.sh "apache 117 down!"

短信查询是通过fetion机器人的插件来实现的,fetion机器人支持message插件,当新消息到来的时候会调用此插件,插件文件在plugin/plugin_message,一个简单的例子

#!/bin/bash
# $1:  fetion_account
# $2:  message
# 插件说明:
# 当有新的消息到来时,系统将调用此插件:
# 调用的第一个参数:飞信账号
# 调用的第二个参数:消息

buddy=$1
message=$2

# 收到93httpd的短信即做如下回复
if [ "$message" = "93httpd" ];then
    msg=`/data/app/zabbix/bin/zabbix_get -s192.168.0.93 -p10050 -k"httpd.connects"`
    sendback="93当前的httpd连接数是 $msg"
else
    sendback="fetion测试"
fi

cmd="chat $buddy $sendback"
echo $cmd

用一个fetion好友的手机发送短信“93httpd”到125201360xxxx383(这是我登陆短信机器人的手机号码),就会收到机器人回复的短信$msg。

这样的方式倒是十分有趣,当然换个思路我们还能实现如下的应用,比如短信查询数据库,输入学生号码返回成绩等等。

如果移动的fetion平台坚持与移动短信之间的免费政策,开放更完整的fetion接口,我想还可以实现更丰富的应用。

发表评论