如何用shell脚本读取xml文件获取关键字的值

qq_24049561 2016-08-24 05:05:07
文件路径:/mnt/heidun/hdlicense.xml
文件内容如下
<?xml version="1.0" encoding="gb2312"?>
<license>
<pos>中国,福建,福州市,鼓楼区</pos>
<installid>123123</installid>
<device>hdsas_base_3.0.0.2_16Q2_RC2</device>
<id>_RC257971fe611f0</id>
<hwid>f04c3d1eb4bf6113</hwid>
<issuetime>2016-08-02 16:46:39</issuetime>
<expired>30 days</expired>
</license>


获得<issuetime>2016-08-02 16:46:39</issuetime>时间加上<expired>30 days</expired>
期限,得到时间减去系统当前时间,小于7天,显示license即将在几天后过期。
...全文
1667 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
杰瑞26 2016-08-26
  • 打赏
  • 举报
回复

#!/bin/bash

CURR_TIME=$(date +'%Y%m%d')
FILE_TIME=$(grep 'issuetime' hdlicense.xml | tr -d '[\-a-z<>/]' | awk '{print $1}')
REAL_TIME=$(date -d "$FILE_TIME +30 days" +%Y%m%d)

d1=$(date "+%s" -d "$REAL_TIME")
d2=$(date "+%s" -d "$CURR_TIME")

EXPI_TIME=$(((d1-d2)/86400))

if [ "$EXPI_TIME" -lt "7" ]; then
    echo "你的license将在 $EXPI_TIME 天后过期!"

LubinLew 2016-08-25
  • 打赏
  • 举报
回复
仅供参考

#!/bin/bash

TARGET_XML_FLIE=/mnt/heidun/hdlicense.xml

#### xml date
DEVICE=`grep -E -o -e '<device>.+</device>' $TARGET_XML_FLIE | sed 's/<device>//g'|sed 's/<\/device>//g'`
ISSUETIME=`grep -E -o -e '<issuetime>.+</issuetime>' $TARGET_XML_FLIE | sed 's/<issuetime>//g'|sed 's/<\/issuetime>//g'|awk '{print $1}'`
EXPIRED=`grep -E -o -e '<expired>.+</expired>' $TARGET_XML_FLIE | sed 's/<expired>//g'|sed 's/<\/expired>//g'|awk '{print $1}'`
#### calc
EXPIRED_DATE=`date -d "$ISSUETIME +$EXPIRED day" +%Y-%m-%d`
CURREN_DATE=`date "+%Y-%m-%d"`
DATETOSEC1=`date -d "$EXPIRED_DATE" +%s`
DATETOSEC2=`date -d "$CURREN_DATE" +%s`
EXPIRED_DAYS=$((($DATETOSEC1-$DATETOSEC2)/(24*60*60)))
#### output
echo "Device: $DEVICE"
echo "License will expired after $EXPIRED_DAYS days."
qq_24049561 2016-08-24
  • 打赏
  • 举报
回复
再加上一个字段: <device>hdsas_base_3.0.0.2_16Q2_RC2</device>这里的hdsas_base_3.0.0.2_16Q2_RC2为版本号

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧