Linux-shell获取天气

用Linux中的shell获取天气,本来觉的比较难,原来,真简单,个位数的代码就搞定。

获取对应城市天气

所有天气信息都从中国天气网获取。每一个城市多会对应一个id(比如,北京为101010100,因为本人在银川,所以例子中就用银川的id:101170101),通过id就可以获取对应城市实时天气或者全天天气,还可以获取七天天气。

shell脚本

shell脚本代码如下:

#!/bin/sh

weatherDateRoot=http://www.weather.com.cn/data/sk/101170101.html
weatherDataFile=weather.html

wget $weatherDateRoot -O $weatherDataFile > /dev/null 2>&1

sed ‘s/.*temp":"\([0-9]\{1,2\}\).*/\1/g‘ $weatherDataFile

此脚本通过将天气信息获取,然后通过正则匹配到当前温度。

如果你只用这个脚本,不再进行二次处理,那也太麻烦。我获取天气信息后是显示到终端命令提示符中的,所以需要还要在做处理。

终端命令提示符中显示天气

首先获取对应城市天气,如银川对应的实时天气信息在:

http://www.weather.com.cn/data/sk/101170101.html

你先在中国天气网搜索到你想要的城市的天气,网址中会包含城市天气id,将上面的网址中的id替换成你城市的id就可以获取。

还有全天天气信息:

http://www.weather.com.cn/data/cityinfo/101170101.html

不知道中国天气网提供七天天气信息没有?如果有,那么我们也可以通过此方法获取七天天气信息。

获取天气信息

对应shell脚本:

#!/bin/sh

allDataUrl=http://www.weather.com.cn/data/cityinfo/101170101.html
allDataFile=/home/snowsolf/shell/weather/allDay.html

dataUrl=http://www.weather.com.cn/data/sk/101170101.html
dataFile=/home/snowsolf/shell/weather/weather.html

wget $dataUrl -O $dataFile > /dev/null 2>&1

wget $allDataUrl -O $allDataFile > /dev/null 2>&1

定时获取

通过crontab命令设置定时任务,执行crontab -e命令(如果第一次需要设置默认编辑器),然后在文件末尾添加:

*/30 * * * * /home/snowsolf/shell/weather/weather.sh >> /dev/null

此行代码设置每30分钟执行一次获取天气的脚本,具体crontab命令其它语法可以google或baidu。

提取天气

sed ‘s/.*temp":"\([0-9]\{1,2\}\).*/\1/g‘

此命令可以从获取的实时天气文件中获取实时天气。

终端命令提示符中显示

你可以参考http://www.cnblogs.com/snowsolf/p/3192224.html。这里可以让你的命令提示符更绚丽。

最后上一幅我的命令提示符图:

简直酷毙了!!!做一个爱折腾的程序员真好!

时间: 2024-11-10 16:22:40

Linux-shell获取天气的相关文章

Linux+Shell获取及拷贝最新备份数据

前面我们介绍了一些脚本配置,今天我们介绍一下,使用Shell脚本如何将指定目录下的最新的文件拷贝到指定目录,我们拷贝前的文件都是压缩文件,而且以备份的日期进行命名的,我们今天介绍两种方式,第一种就是通过文件的最后一次修改时间来判断移动,第二种就是通过获取文件名来进行判断拷贝,具体见下: 我们首先说一下备份脚本,因为我们的源文件是压缩文件,所以介绍一下备份脚本文件: 我们是将/OAFS目录下的ABC目录进行压缩,然后以文件名+日期进行命名 #!/bin/bash SOURCE=/OAFS/WEAV

Linux+Shell获取及拷贝最新数据到远程设备

我们远程一般拷贝数据都是创建了共享秘钥,这样拷贝的话就不用输入密码了,具体可以参考我前面的文章"Linux 下实现SSH互信--http://gaowenlong.blog.51cto.com/451336/1856951": 我们将通过脚本获取LOCALBAKDIR目录下的文件的最后一下修改时间,将最新的修改时间的问题远程拷贝到RMT_HOST #!/bin/bash LOCALBAKDIR=/OAFS/WEAVER_BACKUP RMTRESTDIR=/OAFS RMT_HOST=

linux shell 获取路径中指定信息

file=/home/data/hunan/hn.2015-9-11.log.bbk file_log_name=`basename $file`  ## file_log_name 就等于 hn.2015-9-11.log.bbk file_test=`basename $file .bbk` ## file_test 就等于 hn.2015-9-11.log no_file_path=${file%/*}   ### 获取文件所在的路径  即 /home/data/hunan city=${

Linux shell 获取上上月月末日期

v_curr_rq=`date +%Y%m%d` v_rq=`date -d "yesterday" +%Y%m%d` v_lm=`date +%Y%m01` v_lm_rq=`date -d "${v_lm} last day" +%Y%m%d` v_llm_rq=`date -d "${v_lm} last month last day" +%Y%m%d` #当前日期 echo ${v_curr_rq} #昨天日期 echo ${v_rq}

Linux Shell获取系统资源使用百分比(CentOS)

CPU使用率: top -b -n 1 | head -n 4 | grep "^Cpu(s)" | awk '{print $2}' | cut -d 'u' -f 1 内存使用率: free -m | grep '^-' | awk '{print $3/($3+$4)*100"%"}' IO使用率(DEVICE_PATH的值改成df -h出来的那些Filesystem名称即可): DEVICE_PATH=/dev/sda1;iostat -x -j PATH

linux shell 获取文件夹全文绝对路径

在ls中列出文件的绝对路径 ls | sed "s:^:`pwd`/:" # 就是在每行记录的开头加上当前路径 ps: #在所有行之前/后加入某个字符串 sed 's/^/string/g' file sed 's/$/string/g' file find $PWD -maxdepth 1 | xargs ls -ld # 列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归 find $PWD | xargs ls -ld # 递归列出当前目录下的所有文件(包括隐藏

Linux Shell 相关记录

http://www.tutorialspoint.com/unix/unix-shell.htm Linux Shell 获取脚本的所在目录的绝对路径 basedir=$(cd $(dirname $0); pwd;) echo $basedir shell 执行错误马上退出,而不是继续执行 set -e

shell获取时间的相关命令

Linux shell获取时间和时间间隔(ms级别) 说明:在进行一些性能测试的时候,有时候我们希望能计算一个程序运行的时间,有时候可能会自己写一个shell脚本方便进行一些性能测试的控制(比如希望能运行N次取平均值等),总之,这其中有一个需求可能就是获取一个时间戳或时间差. 1. Linux shell获取时间的相关命令 time命令:获取一个程序的执行时间,可以获取到实际运行时间以及程序在用户态和内核态分别的时间,大部分的性能测试,可能只需要关注实际时间. time命令的使用就很简单了,在原

linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) 1 timeout 1 2 default 0 3 4 title live 5 find --set-root /casper/vmlinuz 6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3 7