|
|
1.1 ! root 1: # An awk script for printing a pretty report of UUCP activities from the ! 2: # UUCP SYSLOG - Erik E. Fair October 2, 1984 ! 3: # ! 4: # v7 UUCP ! 5: $4 == "received" { ! 6: sysname[$2] = $2; ! 7: by_rec[$2] += $6; ! 8: sec_rec[$2] += $8; ! 9: sys_xf[$2] ++; ! 10: } ! 11: # ! 12: # 4.2 BSD UUCP ! 13: $5 == "received" { ! 14: sysname[$2] = $2; ! 15: by_rec[$2] += $7; ! 16: sec_rec[$2] += $9; ! 17: sys_xf[$2] ++; ! 18: } ! 19: # ! 20: # System V UUCP ! 21: $6 == "<-" { ! 22: $1 = substr($1, 1, (index($1, "!") - 1)); ! 23: sysname[$1] = $1; ! 24: by_rec[$1] += $7; ! 25: sec_rec[$1] += $9; ! 26: sys_xf[$1] ++; ! 27: } ! 28: # ! 29: # v7 UUCP ! 30: $4 == "sent" { ! 31: sysname[$2] = $2; ! 32: by_xmt[$2] += $6; ! 33: sec_xmt[$2] += $8; ! 34: sys_xf[$2] ++; ! 35: } ! 36: # ! 37: # 4.2 BSD UUCP ! 38: $5 == "sent" { ! 39: sysname[$2] = $2; ! 40: by_xmt[$2] += $7; ! 41: sec_xmt[$2] += $9; ! 42: sys_xf[$2] ++; ! 43: } ! 44: # ! 45: # System V UUCP ! 46: $6 == "->" { ! 47: $1 = substr($1, 1, (index($1, "!") - 1)); ! 48: sysname[$1] = $1; ! 49: by_xmt[$1] += $7; ! 50: sec_xmt[$1] += $9; ! 51: sys_xf[$1] ++; ! 52: } ! 53: END { ! 54: # ! 55: # print a report header ! 56: printf("System Xfers Bytes rec Bytes xmt Connect Avg Xf Avg rec Avg xmt\n") ! 57: for(i in sysname) { ! 58: # ! 59: # sort report by most connect time (selection sort) ! 60: first = 0; ! 61: for(j in sysname) { ! 62: if (sys_xf[j] > 0) { ! 63: tmp1 = sec_xmt[j]; ! 64: tmp2 = sec_rec[j]; ! 65: # Stupid AWK bug - needs a simple expression ! 66: time = (tmp1 + tmp2); ! 67: if (time > first) { ! 68: first = time; ! 69: sys = sysname[j]; ! 70: } ! 71: } ! 72: } ! 73: # ! 74: # 4.2 BSD awk seems to have problems. This check should not be necessary. ! 75: # Oddly enough, this problem also shows up in System V. WHY??? ! 76: if (sys_xf[sys] != 0) { ! 77: # ! 78: # time for some bean counting ! 79: tmp1 = sec_xmt[sys]; ! 80: tmp2 = sec_rec[sys]; ! 81: # Stupid AWK bug - needs a simple expression ! 82: time = (tmp1 + tmp2); ! 83: hours = time / 3600; ! 84: sec = time % 3600; ! 85: min = sec / 60; ! 86: sec %= 60; ! 87: tot_xf += sys_xf[sys]; ! 88: tot_by_rec += by_rec[sys]; ! 89: tot_by_xmt += by_xmt[sys]; ! 90: tot_time += time; ! 91: # ! 92: # protect myself against mathematical crime (divide by zero) ! 93: if (sec_rec[sys] == 0) ! 94: sec_rec[sys] = 1; ! 95: if (sec_xmt[sys] == 0) ! 96: sec_xmt[sys] = 1; ! 97: # ! 98: # print a pretty system report (god what an awful printf format...) ! 99: printf("%-8s%8d%11d%11d%4d:%.2d:%.2d%8d%9d%9d\n", \ ! 100: sysname[sys], sys_xf[sys], by_rec[sys], by_xmt[sys], hours, min, sec, \ ! 101: ((by_rec[sys] + by_xmt[sys]) / sys_xf[sys]), \ ! 102: (by_rec[sys] / sec_rec[sys]), \ ! 103: (by_xmt[sys] / sec_xmt[sys])); ! 104: # ! 105: # make certain we will not see this system again... (selection sort) ! 106: sys_xf[sys] = 0; ! 107: } ! 108: } ! 109: # ! 110: # calculate time split for total time (and print totals [*shudder*]) ! 111: hours = tot_time / 3600; ! 112: sec = tot_time % 3600; ! 113: min = sec / 60; ! 114: sec %= 60; ! 115: printf("\n%-8s%8d%11d%11d%4d:%.2d:%.2d\n", \ ! 116: "TOTALS", tot_xf, tot_by_rec, tot_by_xmt, hours, min, sec); ! 117: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.