对 Web 日志里的 URL decode 后做分析
有些日子没有写脚本,手都有点生了。 今天有人说手机上某个功能不能使用,看了下 Web 日志, URL 都是 Encode 的,需要 Decode 再分析里面的 json 数据。所q以有了这段代码。
#!/bin/bash
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
LOG="/var/log/nginx/xxxx.log"
DB="db_name"
C=0
E=0
for ord in $(
for u in $(grep "confirm_order" $LOG|awk '{print $7}')
do
urldecode $u;
done|awk -F= '{print $NF}'|jq -r .hexiaoNo|sort|uniq)
do
res=$(mysql $DB -Nq -e "select id from t_order where recouncile_code='"$ord"'")
[ -z "$res" ] && echo "核销单据 $ord 录入失败!" && E=$(( $E + 1))
C=$(( $C + 1))
done
echo "一共录入 $C 条核销单据(含 $E 条失败)"
这代码里核心的就是 urldecode 一行函数。
后面无非就是从日志里,用 jq 命令解析对应 json 串字段里的内容,然后去数据库对应的订单表内查找是否有该核销单据号码,如果没有说明录入数据失败。
