前言

因为最近docker中的打包容器时间不太准确,容器我也没办法控制,只能另求它法

摸索

由于系统的时间不准确,导致生成的时间文件不对,所以解决想法就是通过获取网络时间并使用。

通过网络查询,找到类似的脚本,但是并不能直接使用。遂临时学了下linux命令,最终摸索出如下代码。

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")

// sudo date -s "$time_a"

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")

// sudo date -s "$time_a"

rm ./beijing // 删除文件,以便下次获取

windows保存

执行是发生shell脚本执行错误 $’\r’:command not found
存现这种错误是因为 编写的 shell脚本是在win下编写的,每行结尾是\r\n 的Unix 结果行是\n
所以在Linux下运行脚本 会任务\r 是一个字符,所以运行错误,需要把文件转换下
方法一、

sed -i 's/\r//' 脚本名

方法二、

yum -y install dos2unix

dos2unix 脚本名

参考

shell练习–获取网络时间,调整Linux系统时间

linux命令大全

curl命令

curl打开网页403或者302的解决方法

发生shell脚本执行错误 $’\r’:command not found