linux下使用飞信机器人发送天气信息

 
一、fetion安装
关于更多linux下fetion的安装使用,请参考网站:http://www.it-adv.net/
1、基本环境搭建
#mkdir �Cp /usr/local/fetion
#mkdir �Cp /usr/local/fetion/lib
#cd /usr/local/fetion
下载fetion运行时所需要的库
#wget http://www.it-adv.net/fetion/downng/library_linux.tar.gz
下载fetion主程序
#wget http://www.it-adv.net/fetion/downng/fetion20090406003-linux.tar.gz
#tar -zxvf library_linux.tar.gz -C ./lib
#cp /usr/local/fetion/lib* /usr/lib
#tar -zxvf fetion20090406003-linux.tar.gz
2、加入动态库
将fetion所需要的库添加到动态链接库
#vim /etc/ld.so.conf
增加一行
include /etc/ld.so.conf.d/*.conf

#vim /etc/ld.so.conf.d/fetionlib.conf
增加一行(fetion所需要库的目录)
/usr/local/fetion/lib

添加到动态链接库的缓存文件
#ldconfig -v
输出中会显示这些动态库的路径及相关文件。
3、安装相关开发库依赖
如果是64位系统需要安装32位类库,fetion2009的是基于32位系统编译的。
#apt-get install lib64stdc++6(lib32stdc++6)
#apt-get install lib64z1(lib32z1)
注:括号里是x86系统的的开发库。
4、简单测试
进入fetion的 instll目录,执行
#./fetion 
显示用法就说明安装成功了。

常用指令
手机号登陆直接发送短信内容(这里显示地声明了编码)
 fetion --mobile=158xxxxxxxx --pwd=你的密码 --to=137xxxxxxxx --msg-utf8=测试
手机号登陆直接发送短信内容文件
fetion --mobile=137xxxxxxxx --pwd=mypwd --to=137xxxxxxxx --file-utf8=/path/sms.txt
飞信号登陆
fetion --sid=6630321 --pwd=mypwd --to=137xxxxxxxx --msg-utf8=测试
配置文件登陆
 fetion --config=sample.conf --index=1 --to=137xxxxxxxx --msg-utf8=测试

发送消息中如果需要换行,请用 \n 
 // 以下为 sample.conf 内容,文件内容中, #号为注释行 
 # This config file is for fetion robot tool.
 # Usage demo: ./fetion --config=/etc/fetion.conf --index=1
 # ID Mobile Password
  1 137xxxx 1234234
多个号码可以用”,”分割。

至此,飞信安装调试成功完毕。

二、处理天气信息
我们在取得天气信息后,如何来处理它使之成为我们最相要的信息呢。不可能把整个页面的内容发过去吧,取得的html代码会产生不知多少条短信,极大的浪费了资源,而且收到的用户也会觉得烦,所以我们必须想办法来达到最好的效果。

我们先转储这个网页文件:
#wget -nv -O weather.html http://wap.weather.com.cn/wap/58367/h24/
这里取了上海24小时的天气预报信息,并转储为 weather.html文件。
好,接下来我们来分析其内容,使之刚好成为一条有用的短信:
#more weather.html|grep -v "img src"|html2text|sed '/^$/d'|sed -n '2,8p'|sed 's/':'/':'/p'|sed 's/^[ ]//g'|sed '/^\[/d'|uniq
当然也可以跟据需要来自己改动,”html2text”这个包可能要另外安装。最后得到了如下一些信息:
2009年9月18日 星期五
天气:阵雨
气温:28度到22度
风向风力:微风小于3级
紫外线指数:弱
穿衣指数:热


笔者测试过,刚好一条短信,不多不少,加上农历的话就要超过了。至此天气信息处理算是成功了。

三、整合
我是强烈建议写成一脚本来执行,而不是单纯的命令调用。这里是我写的一个脚本程序,工作的很好:
#!/bin/bash
mobilelist="1582176xxxx,1392176xxxx"
#注意,这里要用引号括起来,用逗号来分隔。
#取得天气信息
wget -nv -O weather.html http://wap.weather.com.cn/wap/58367/h24/
weather_msg=$(more weather.html|grep -v "img src"|html2text|sed '/^$/d'|sed -n '2,8p'|sed 's/':'/':'/p'|sed 's/^[ ]//g'|sed '/^\[/d'|uniq)
rm -fv weather.html

#循环发送
for phone in $mobilelist
do
  /usr/local/fetion/install/fetion --mobile='1391603xxxx' --pwd='jaxxxx6' --to=$phone --msg-utf8="$weather_msg"
#echo $phone
done

 
‘逃’宝了

你可能感兴趣的:(linux,职场,休闲)