前言 因为最近docker中的打包容器时间不太准确,容器我也没办法控制,只能另求它法
摸索 由于系统的时间不准确,导致生成的时间文件不对,所以解决想法就是通过获取网络时间并使用。
通过网络查询,找到类似的脚本,但是并不能直接使用。遂临时学了下linux命令,最终摸索出如下代码。
原理:获取时间网站页面数据并保存到本地,用cat命令去读取文件,通过grep匹配,awk截取
wget -q http://time.tianqi.com/beijing time_ch=$(cat ./beijing |grep "clock" |awk -F ">" '{print $2}' |awk -F "<" '{print $1}' ) year=$(echo $time_ch |awk -F "年" '{print $1}' ) month=$(echo $time_ch |awk -F "年" '{print $2}' |awk -F "月" '{print $1}' ) day=$(echo $time_ch |awk -F "月" '{print $2}' |awk -F "日" '{print $1}' ) time_now=$(echo $time_ch |awk '{print $3}' ) time_a=$(echo "$year -$month -$day $time_now " ) rm ./beijing
上机一试,没有wget。。。
不想下载wget,寻求其他方式
尝试使用curl命令
curl http://time.tianqi.com/beijing
!!!403!!!
添加User-Agent(创建请求的浏览器和用户代理名称等信息传达给服务器)信息就可以访问了。
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" http://time.tianqi.com/beijing
访问成功
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" -o beijing http://time.tianqi.com/beijing
保存文件成功
实践 curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" -o beijing http://time.tianqi.com/beijing time_ch=$(cat ./beijing |grep "clock" |awk -F ">" '{print $2}' |awk -F "<" '{print $1}' ) year=$(echo $time_ch |awk -F "年" '{print $1}' ) month=$(echo $time_ch |awk -F "年" '{print $2}' |awk -F "月" '{print $1}' ) day=$(echo $time_ch |awk -F "月" '{print $2}' |awk -F "日" '{print $1}' ) time_now=$(echo $time_ch |awk '{print $3}' ) time_a=$(echo "$year -$month -$day $time_now " ) rm ./beijing
由于网站改版,导致原本的命令获取不到数据,现更改为如下
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" -o beijing http://time.tianqi.com/beijing date=$(cat ./beijing |grep "span>202" |awk -F ">" '{print $2}' |awk -F "<" '{print $1}' ) hour=$(cat ./beijing |grep "hour_box" |awk -F ">" '{print $2}' |awk -F "<" '{print $1}' ) min=$(cat ./beijing |grep "hour_box" |awk -F ">" '{print $6}' |awk -F "<" '{print $1}' ) sec=$(cat ./beijing |grep "hour_box" |awk -F ">" '{print $10}' |awk -F "<" '{print $1}' ) time=$(echo "$date $hour :$min :$sec " ) rm ./beijing
windows保存 执行是发生shell脚本执行错误 $’\r’:command not found 存现这种错误是因为 编写的 shell脚本是在win下编写的,每行结尾是\r\n 的Unix 结果行是\n 所以在Linux下运行脚本 会任务\r 是一个字符,所以运行错误,需要把文件转换下 方法一、
方法二、
dos2unix 脚本名
参考 shell练习–获取网络时间,调整Linux系统时间
linux命令大全
curl命令
curl打开网页403或者302的解决方法
发生shell脚本执行错误 $’\r’:command not found