#!/bin/awk -f ############################# # clean data and filter some to rediect to new file # Author: Liao # modify time: 2022/2/17 17:05 (+8:00) ############################# BEGIN{ # filePath = "/data/log_dir/mySimpleLog" # system("echo '\n\n\n----------' >> "awk_run_log_path" && date '+%x %X' >> "awk_run_log_path) #dp_recv_from_device = @/ dp rept_type:[0-9]+, data:/ #dp_is_condition = @/dp [0-9]+ match/ #dp_not_condition = @/no id match/ #pattern = @/([0-9]+-[0-9]+ ([0-9]+:){3}[0-9]+)/ # #connection_check_ok = @/condition set is ok,then execute action set./ # Get form OS log2file("{\"event\":\"gateway reboot\"}") } $0~/ dp rept_type:[0-9]+, data:/ { atime = match($0,/[0-9]{1,2}-[0-9]{1,2} ([0-9]{1,2}:){3}[0-9]{1,3}/) ? substr($0,RSTART,RLENGTH):null; adps = match($0,/\{.+\}/) ? substr($0,RSTART,RLENGTH):null; aLogJson = "{ \"time\":"atime", \"event\":\"dp report\", \"dps\":"adps"}" # log2file(aLogJson) } $0~/rev id:\w+ cmd:\{.*\} type:0/ { atime = match($0,/[0-9]{1,2}-[0-9]{1,2} ([0-9]{1,2}:){3}[0-9]{1,3}/) ? substr($0,RSTART,RLENGTH) : null; adps = match($0,/cmd:\{.+\} /) ? substr(substr($0,RSTART,RLENGTH),5,RLENGTH-5) : "unkown"; devMac = match($0,/rev id:\w+/) ? substr(substr($0,RSTART,RLENGTH),8) : null if((getline conditionLine) > 0){ isCondition = match(conditionLine,/(no id match|no dp match)/) ? "false" : match(conditionLine,/dp [0-9]+ match/) ? "true" : "unkown" condition = "\"isCondition\":"isCondition if (isCondition=="true"){ conditionDp = match(conditionLine,/\] dp [0-9]+ match/) ? substr(substr(conditionLine,RSTART,RLENGTH),6,RLENGTH-11) : "unkown" condition = condition",\"conditionDp\":"conditionDp } }else{ print "no more line" } aLogJson = "{ \"time\":"atime", \"event\":\"linkage recv dp\", \"dps\":"adps",\"devMac\":\""devMac"\","condition"}" log2file(aLogJson) } $0~/condition set is ok,then execute action set\./ { # print $0 atime = match($0,/[0-9]{1,2}-[0-9]{1,2} ([0-9]{1,2}:){3}[0-9]{1,3}/) ? substr($0,RSTART,RLENGTH) : null; aruleid = match($0,/scene:\w+,/) ? substr(substr($0,RSTART,RLENGTH),7,RLENGTH-7) : "false" log2file("{ \"time\":"atime", \"event\":\"trigger\", \"ruleid\":\""aruleid"\",\"triggerNow\":\"true\"}") } $0~/action<[0-9]+> is dp cmd:/ { atime = match($0,/[0-9]{1,2}-[0-9]{1,2} ([0-9]{1,2}:){3}[0-9]{1,3}/) ? substr($0,RSTART,RLENGTH) : null; adps = match($0,/cmd:\{.+\}$/) ? substr(substr($0,RSTART,RLENGTH),5,RLENGTH-4) : "unkown"; aLogJson = "{ \"time\":"atime", \"event\":\"action\", \"cmd\":"adps"}" log2file(aLogJson) } END{ } function matchRet(reg ,RSTART,RLENGTH){ #print reg if(match($0,$reg)){ return substr($0,RSTART,RLENGTH) }else{ return "Nothing Matched" } } function log2file(logJson){ system("echo -e '"logJson"' >> /data/log_dir/mySimpleLog") } function splitAndUpload(){ newFileName = "/data/log_dir/mySimpleLog_"systime() system("mv /data/log_dir/mySimpleLog "newFileName" && tftp 192.168.1.5 -p -l "newFileName" && rm "newFileName) }