红联Linux门户
Linux帮助

用shell脚本实时获取白银价格

发布时间:2016-09-22 09:58:54来源:linux网站作者:guoyilongedu
最近一直在想做一个小系统,实时获取白银价格,如果达到了自己预期的价格,就发到自己的邮箱,免得自己经常去查看白银价格。
用shell脚本实时获取白银价格
 
首先在自己的ubuntu中启用邮件发送功能。
现在介绍方法:ubuntu下使用mutt和msmtp发送邮件的简单配置
运行:
sudo apt-get install mutt
sudo apt-get install msmtp
安装好了这两个包之后,就是进行相关配置文件的配置了:
首先配置 mutt,系统全局设置配置文件在 /etc/Muttrc,如果使用某个系统用户,可以在~/.muttc中设置,没有该文件,就自己创建。
vi .muttrc
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="zhxia"
set from=zhenghon@ajk.com
set envelope_from=yes
接着,配置msmtp
创建 ~/.msmtprc 和 ~/.msmtp.log,分别为配置文件和日志文件
vi .msmtprc
account default
host smtp.corpease.net
from zhenghong@ajk.com
auth plain
user zhenghong@ajk.com
password xxxxxxx
logfile ~/.msmtp.log
由于password是明文,所以需要修改此文件的访问权限
chmod 600 .msmtprc 
同时创建 日志文件 touch ~/.msmtp.log
做完了以上的配置之后,可以进行邮件的发送测试了:
查看SMTP服务器是否支持认证的TLS加密:
zhxia@zhxia-Desktop:~$ msmtp --host=smtp.corpease.net --serverinfo
SMTP server at smtp.corpease.net (mail3.corpease.net [61.145.121.45]), port 25:
corpease.net Anti-spam GT for Coremail System (corpease[20160922])
Capabilities:
PIPELINING:
Support for command grouping for faster transmission
AUTH:
Supported authentication methods:
PLAIN LOGIN
发送邮件测试:
echo "hello world" | mutt -s "title" 25252500@qq.com
一般情况下,均可已正常接收邮件。
下面是一个比较完整的发送邮件示例:
echo "hello" | mutt -s "title" 25252500@qq.com,zhenghong00@163.com -c 40027871@qq.com -a /tmp/ip.tmp
发送给多人,抄送,添加附件
address="zhenghong@ajk.com"
echo $content|mutt  -s "${subject}" -e 'set content_type="text/html"' -e 'send-hook . "my_hdr  X-Priority: 1"' $address
发送邮件时设置邮件的文本类型为:html格式,邮件的等级为:重要。
 
中间有一些不是很清楚的地方,主要是配置那些文件是容易出问题,让不熟悉ubuntu的人不是很清楚,可以按照以下方法来:
~/.muttrc 中~是ubuntu 的配置目录, .muttrc 是配置文件名
具体配置步骤如下:
cd ~  
vim .muttrc  
.msmtprc   .msmtp.log 都可以像这样来进行配置 
send.sh 
#!/bin/bash  
i=1  
while(($i<100))  
do   
rm index.html  
wget -b http://zhibaiyin.zhongguobaiyin.com/ >> mylog  
sleep 5  
#cat index.html  
a=$(cat index.html)  
#echo "$a"  
b=$(grep JO_42761q59 index.html)  
c=$(grep JO_42761q73 index.html)  
echo $b  
echo $c  
k=${c#*>}  
k=${k%%<*}  
tmp_time=${b#*>}  
tmp_time=${tmp_time%%<*}  
tmp_time=$(date +%Y-%m-%d-%H:%M:%S)  
echo $tmp_time  
#k=2  
t=3.7  
#echo "1.7>1.6" | bc  
tmp=$(echo "$k<$t" | bc)  
#echo $num1  
echo $tmp  
t=1  
if [ $tmp -eq $t ]  
then  
tt="  "  
content=$tmp_time$tt$k  
echo $content | mutt -s "silver price" 1100499969@qq.com  
echo $tmp  
echo $content  
fi  
echo $k   
sleep 5m  
done  
 
从这个网址 http://zhibaiyin.zhongguobaiyin.com/  得到白银价格  
用一个死循环 ,5分钟获取一次网页,如果达到了自己想要的价格,就发邮件到指定的邮箱。
再写一个启动shell在后台运行并输出日志
#!/bin/bash  
nohup ./send.sh >> mylog &  
因为在获取网页时会产生比较多的日志文件,可以写个 shell 脚本来进行循环删除
#!/bin/bash  
dr=$(pwd)  
echo $dr  
Str=$(ls wget-log.*)   
for x in $Str; do   
echo $x  
rm $x  
done  
 
至此 这个小系统就差不多了,不得不感叹shell 脚本功能的强大。但是在这个网站 http://zhibaiyin.zhongguobaiyin.com/ 上纸白银的价格,静态网页的白银价格更新的比较慢,它们是在浏览器加载之后,再自动刷新白银价格。但是通过这种获取网页再解析网页内容来得到白银价格的方法,不是很好,数据没法做到真正的实时。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/24374.html