最近自从论坛上出现了利用139手机邮箱建立股票短信查询系统,陆续有几个人咨询我相关fetion api使用,所以这里做一下记录,分享一下给大家。
我使用fetion,没啥特别的技术含量,直接利用了三方的api包,也没干啥高级的事情,只是进行短信发送。
ps : 可以干的事情很多,只有你足够的有才,特别适合骗一下纯情的小女生,哈哈
1. 下载fetion lib库(我使用的是ubuntu 32位的系统,所以后续都是介绍linux系统相关,如使用windows请直接访问http://www.it-adv.net/)
下载公用lib库: http://www.it-adv.net/fetion/linuxso_20101113.rar
下载fetion主程序: http://bbs.it-adv.net/attachment.php?aid=43&k=a8c8d4609367ded2ae24721b4246802a&t=1289908191
2. 环境配置
$ mkdir fetion $ cp -r linuxso_20101113 fetion/lib/ $ cp /tmp/fetion fetion/ 创建fetion目录,包含主程序和lib库
3. 设置启动脚本
$ touch fetion.sh $ vi fetion.sh # fetion.sh脚本内容 #!/bin/sh if [ $# -eq 0 ] ; then cat << EOF >&2 Usage: $0 mobile passwd to msgcontent EOF exit 1 fi FETION_MOBILE=$1 FETION_PWD=$2 FETION_TO=$3 MSG="$4" BASE=`dirname $0` export LD_LIBRARY_PATH=$BASE/lib:$LD_LIBRARY_PATH $BASE/fetion --mobile=$FETION_MOBILE --pwd=$FETION_PWD --to=$FETION_TO --msg-utf8="$MSG" --msg-type=1 --exit-on-verifycode
其余的参数可见:
Usage: --mobile=[mobile] --sid=[sid] --pwd=[pwd] --config=[config file] *format:index mobile password --index=[index no in config file,refer to sample.conf] --debug *debug mode on --hide *login fetion in hidden state --to=[mobile/sid] --command-path=[command file path] --robotmode --daemon(linux only) --proxy-ip(http proxy ip) --proxy-port(http proxy port) --msg-gb=[gb2312/gbk message] --msg-utf8=[utf8 message] --msg-type=[0/1/2 sms longsms smartmsg] --file-gb=[gb2312/gbk file] --file-utf8=[utf8 file] --query-cmcc-no --auto-retry --exit-on-verifycode --t3key=[http://www.tui3.com/page/smssend/]
运行时指定lib库,选择默认的登录方式为手机号码(sid那串不是人记的),--msg-type指定使用longsms,字符集使用utf-8。说白了就是封装一下fetion,自己使用起来更加方便而已。
当然你也可以不行,每次你就手工敲:
export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
或者在系统级别添加lib库,需要root权限,不推荐:
$ vi /etc/ld.so.conf # 末尾添加一行记录 /usr/local/fetion/lib,然后把对应下载的lib库拷过去
4. 运行测试一下
1. 使用复杂的密码(数字+字母+符号),将不会弹出图形验证码。
2. 第一次使用机器人时,即使是复杂密码,也可能会弹出图形验证码,以后将不再提示。
所以密码还是搞的稍微复杂点吧。
5. 其他应用
使用了一个html2text的库,可以下载:wget http://archive.ubuntu.com/ubuntu/pool/main/h/html2text/html2text_1.3.2a.orig.tar.gz
#!/bin/sh # 1. set path BASE_DIR=/home/admin/ljh/weather HTML2TEXT_DIR=/home/admin/ljh/html2text-1.3.2a # 3. get weather from internet wget -nv -O $BASE_DIR/weather.html http://wap.weather.com.cn/wap/weather/101210101.shtml > $BASE_DIR/log 2>&1 # 4. format echo "" > $BASE_DIR/msg cat $BASE_DIR/weather.html | $HTML2TEXT_DIR/html2text | grep -A 6 '日' | sed 's/\[.*//g' | sed 's/.*]$//g' | sed 's/ //g' | grep -v '^$' | head -n 6 > $BASEE _DIR/msg # 5. send sms echo `date` > $BASE_DIR/log sh $BASE_DIR/fetion.sh "`cat $BASE_DIR/msg`" >> $BASE_DIR/log 2>&1 # 6. clear env rm -r $BASE_DIR/weather.html #rm -r $BASE_DIR/msg
说明:调用的是http://wap.weather.com.cn 的页面,大家可以选择对应的城市url,进行天气预报发送处理。
#!/bin/sh # 1. set path BASE_DIR=/home/admin/ljh/zhj # 3. get weather from internet wget -nv -O $BASE_DIR/gold.txt http://quote.zhijinwang.cn/xml/gold.txt?$RANDOM > $BASE_DIR/log 2>&1 wget -nv -O $BASE_DIR/ag.txt http://quote.zhijinwang.cn/xml/ag.txt?$RANDOM > $BASE_DIR/log 2>&1 # 4. format echo "" > $BASE_DIR/msg TIME=`cat $BASE_DIR/gold.txt | awk -F'&' '{print $1}' | awk -F'=' '{printf "更新时间:%s",$2}'` ZHJ_MAI_PRICE=`cat $BASE_DIR/gold.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "买入价:%.2f",$3}'` ZHJ_MAI_CHU_PRICE=`cat $BASE_DIR/gold.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "卖出价:%.2f",$4}'` ZHJ_MAX_PRICE=`cat $BASE_DIR/gold.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "最高价:%.2f",$5}'` ZHJ_MIN_PRICE=`cat $BASE_DIR/gold.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "最低价:%.2f",$6}'` AG_MAI_PRICE=`cat $BASE_DIR/ag.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "%.2f",$3}'` AG_MAI_CHU_PRICE=`cat $BASE_DIR/ag.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "%.2f",$4}'` AG_MAX_PRICE=`cat $BASE_DIR/ag.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "%.2f",$5}'` AG_MIN_PRICE=`cat $BASE_DIR/ag.txt | awk -F'&' '{print $2}' | awk -F'|' '{printf "%.2f",$6}'` echo "$TIME\n$ZHJ_MAI_PRICE,$AG_MAI_PRICE\n$ZHJ_MAI_CHU_PRICE,$AG_MAI_CHU_PRICE\n$ZHJ_MAX_PRICE,$AG_MAX_PRICE\n$ZHJ_MIN_PRICE,$AG_MIN_PRICE" > $BASE_DIR/msg # 5. send sms echo `date` > $BASE_DIR/log sh $BASE_DIR/fetion.sh "`cat $BASE_DIR/msg`" >> $BASE_DIR/log 2>&1 # 6. clear env rm -r $BASE_DIR/gold.txt rm -rf $BASE_DIR/ag.txt #rm -r $BASE_DIR/msg
说明:调用的是www.zhijinwang.cn的几个url,shell分析完数据后进行短信发送,然后设置一个crontab,定时发送一下。
tips : 给部门做了一个短信发送页面,写定具体的mobile列表,同时由部门贡献一个飞信号码,哈哈
1. 使用的nagios监控脚本+fetion短信报警
其中一个例子,比如机器load监控
$ touch monitor.sh #!/bin/sh function check_load(){ warn=$1 critical=$2 result=`$BASE/monitor/check_load -w $warn,$warn,$warn -c $critical,$critical,$critical` echo $result } function analysis() { content=$1 if [ "$content" = "" ] ; then continue fi match=`echo $content | grep -oP '(OK|WARNING|CRITICAL)'` case "$match" in OK ) ;; WARNING ) sendsms "$content" ##短信发送 ;; CRITICAL ) sendsms "$content" ##短信发送 ;; esac echo "`date`:$content" } function sendsms() { local msg=$1 $BASE/fetion.sh $FETION_MOBILE $FETION_PWD $FETION_TO "$msg" } function start(){ method=$1 if [ "$method" = "" ] ; then echo "you should input monitor method:" fi result=`$*` ##调用具体的监控方法获取返回值 analysis "`hostname`:$result" } start $* ##执行入口
说明:
* $BASE/monitor/check_load 这个是从nagions监控中拷贝出来的脚本
* 最后的运行也是通过crontab进行调度控制
*/5 * * * * monitor.sh check_load 8 16 1>>/tmp/monitor.log 2>&1
其他的check_memory,check_tcp_status,check_disk等等,就大家去发挥吧
不过现在的http://www.it-adv.net/更新速度还是蛮快的,这也可以省去我自己分析协议更新不够勤快的烦恼。