1 #!/bin/ksh 2 # ckurf.ksh by Dan Martin (DRM/CTG) Fri Sep 15 07:59:13 CDT 2000 3 # lgdir="/nfs/apps/maf/log" 4 lgdir="${HOME}/log" 5 tmpfi="/tmp/junk$$" 6 outfi="/tmp/`basename ${0} .ksh`.txt" # Output File 7 if [[ -z "$1" ]] 8 then 9 # urffi="${lgdir}/URF_D20000915_T001537.log" 10 cd $lgdir 11 ls -1t URF*.log >$tmpfi 12 duh=`awk 'NR == 1 {print $0; exit}' $tmpfi` 13 urffi="${lgdir}/${duh}" # log file to examine 14 rm $tmpfi 15 cd - 16 else 17 urffi="${lgdir}/$1" # log file to examine 18 fi 19 [[ -s "${urffi}" ]] || exit 1 20 # data eg: 21 # Connecting to stream: 3 22 # URF0013I Sending Repoll request for NEI=404 SEQUENCE=7696 - 7696. 23 # URF0013I Sending Repoll request for NEI=4 SEQUENCE=6 - 6. 24 # URF0015W Repoll response for NEI=4 SEQUENCE=6 :RECORD NOT FOUND. 25 # 26 clear 27 siz=`ls -s $urffi | awk '{print $1}'` 28 if (( $siz > 10000 )) # 10000 = 5 Mb 29 then 30 echo "\nFile \"$urffi\" is too big: $siz blocks\n" 31 exit 0 32 else 33 echo "\nWorking..." 34 fi 35 awk -v lgf="${urffi}" ' 36 # spc(n) slides n [more] spaces along the current line: 37 function spc(n) {for (i = 0; i < n; i++) printf(" ")} 38 # skip(n) jumps to the next line and skips down an additional (n-1) lines: 39 function skip(n) {for (i = 0; i < n; i++) printf("\n")} 40 BEGIN \ 41 {printf("\nUPSTREAM REPOLL INFO FROM: %s\n\n", lgf) 42 } 43 # main() 44 {if ($1 == "Connecting" && $2 == "to" && $3 == "stream:") print $0 45 if ($1 == "URF0013I" && $2 == "Sending" && $3 == "Repoll") 46 {fld = split($6,eq,"=") # Break $6 into array with = as field delimiter 47 nei = eq[2] # NEI Number 48 ++nct[nei] # Count how many times each NEI has been repolled 49 ++rep # Count total repolls 50 } 51 if ($1 == "URF0015W" && $2 == "Repoll" && $3 == "response") 52 {fld = split($5,rnf,"=") # Break $5 into array with = as field delimiter 53 nei = rnf[2] # NEI Number 54 ++nnf[nei] # Count how many times each NEI has been NOT FOUND 55 ++tnf # Count Total Not Founds 56 } 57 # Would it be worth a 2-D array to attach stream info to nct[] ? 58 } 59 END \ 60 {printf("\n") 61 spc(15); printf("NEID TIMES REPOLLED\n") 62 spc(15); printf("==== ==============\n") 63 for (nei in nct) {spc(15); printf("%4d %4d\n", nei, nct[nei])} 64 skip(1) 65 spc(5); printf("Total Repolls: %4s\n\n", rep) 66 spc(15); printf("NEID TIMES NOT FOUND\n") 67 spc(15); printf("==== ===============\n") 68 for (nei in nnf) {spc(15); printf("%4d %4d\n", nei, nnf[nei])} 69 skip(1) 70 spc(1); printf("Repolls Not Found: %4s\n\n", tnf) 71 }' $urffi | tee $outfi 72 echo "Output above also resides in \"$outfi\".\n" 73 # EOF ckurf.ksh ************ EXAMPLE OUTPUT ********************* UPSTREAM REPOLL INFO FROM: /nfs/apps/maf/log/URF_D20010105_T000503.log Connecting to stream: 3 NEID TIMES REPOLLED ==== ============== 40 1 404 89 33 15 Total Repolls: 105 NEID TIMES NOT FOUND ==== =============== 40 1 33 15 Repolls Not Found: 16 Output above also resides in "/tmp/ckurf.txt".