1*48644Sbostic#!/bin/sh 2*48644SbosticPATH=:/bin:/usr/bin:/usr/ucb 3*48644Sbosticexport PATH 4*48644Sbosticrm -f /tmp/cmds /tmp/callsto /tmp/callsfrom /tmp/inuse /tmp/outuse 5*48644Sbostictouch /tmp/cmds /tmp/inuse /tmp/outuse 6*48644Sbosticcd /usr/spool/uucp 7*48644Sbosticif [ $# -gt 0 ] 8*48644Sbosticthen 9*48644Sbostic what="$1/uucico/* $1/uux*/* $1/xferstats/*" 10*48644Sbosticelse 11*48644Sbostic if [ -f LOGFILE ] 12*48644Sbostic then 13*48644Sbostic what="LOGFILE SYSLOG" 14*48644Sbostic else 15*48644Sbostic what="LOG/uucico/* LOG/uux*/* LOG/xferstats/*" 16*48644Sbostic fi 17*48644Sbosticfi 18*48644Sbosticsed -e "s/PATH=.*PATH;// 19*48644Sbostic/REQUEST/d" $what | 20*48644Sbostic/bin/awk ' 21*48644SbosticBEGIN { fmon = fday = ftime = 99 22*48644Sbostic lmon = lday = ltime = 0 } 23*48644Sbostic$4 ~ /SUCCEEDED|OK/ { 24*48644Sbostic t = substr($3,index($3,"-")+1,5) 25*48644Sbostic split(t,time,":") 26*48644Sbostic if($5 !~ /conversation/) { 27*48644Sbostic startup[$2] = time[1]*60+time[2] 28*48644Sbostic date[$2] = substr($3, 2, index($3,"-")-2) 29*48644Sbostic } 30*48644Sbostic} 31*48644Sbostic$4 ~ /FAILED|CAUGHT|OK|TIMEOUT/ { 32*48644Sbostic if(startup[$2] == 0 || $5 ~ /startup/) 33*48644Sbostic continue 34*48644Sbostic t = substr($3,index($3,"-")+1,5) 35*48644Sbostic split(t,time,":") 36*48644Sbostic elapsed = time[1]*60+time[2] - startup[$2] 37*48644Sbostic if (elapsed < 0 ) 38*48644Sbostic elapsed += 24*60 39*48644Sbostic if (elapsed == 0) 40*48644Sbostic elapsed = 1 41*48644Sbostic if(callto[$2] ){ 42*48644Sbostic totcallto[$2] += elapsed 43*48644Sbostic numcallto[$2]++ 44*48644Sbostic printf("%s\t%s\t%02d:%02d - %02d:%02d\n",$2,date[$2],startup[$2]/60,startup[$2]%60,time[1],time[2])>>"/tmp/callsto" 45*48644Sbostic }else{ 46*48644Sbostic totcallby[$2] += elapsed 47*48644Sbostic numcallby[$2]++ 48*48644Sbostic printf("%s\t%s\t%02d:%02d - %02d:%02d\n",$2,date[$2],startup[$2]/60,startup[$2]%60,time[1],time[2])>>"/tmp/callsfrom" 49*48644Sbostic } 50*48644Sbostic callto[$2] = 0 51*48644Sbostic startup[$2] = 0 52*48644Sbostic} 53*48644Sbostic$4 ~ /SUCCEEDED/{ 54*48644Sbostic if ($5 ~ /call/) 55*48644Sbostic callto[$2]++ 56*48644Sbostic} 57*48644Sbostic$4 ~ /FAILED|CAUGHT/{ 58*48644Sbostic if ($5 ~ /call|conversation|SIGNAL/ ) 59*48644Sbostic failed[$2]++ 60*48644Sbostic} 61*48644Sbostic$5 ~ /sent/{ 62*48644Sbostic sentbytes[$2] += $7 63*48644Sbostic sentfiles[$2] ++ 64*48644Sbostic seconds[$2] += $9 65*48644Sbostic retries[$2] += $11 66*48644Sbostic havout = 1 67*48644Sbostic outuse[$1] = $1 68*48644Sbostic outusebytes[$1] += $7 69*48644Sbostic outusefiles[$1] ++ 70*48644Sbostic outusesecs[$1] += $9 71*48644Sbostic} 72*48644Sbostic$5 ~ /received/{ 73*48644Sbostic recbytes[$2] += $7 74*48644Sbostic recfiles[$2] ++ 75*48644Sbostic seconds[$2] += $9 76*48644Sbostic retries[$2] += $11 77*48644Sbostic havin = 1 78*48644Sbostic inuse[$2 "!" $1] = $2 "!" $1 79*48644Sbostic inusebytes[$2 "!" $1] += $7 80*48644Sbostic inusefiles[$2 "!" $1] ++ 81*48644Sbostic inusesecs[$2 "!" $1] += $9 82*48644Sbostic} 83*48644Sbostic$5 ~/XQT/{ 84*48644Sbostic if( $7 ~ /!|@/ && $6 ~ /rmail/) 85*48644Sbostic printf("%s\t%s\t%-8s\t%s\n",substr($3,2,index($3,"-")-2),substr($3,index($3,"-")+1,5),$2 "!" $4,$7)>>"/tmp/cmds" 86*48644Sbostic} 87*48644Sbostic$4 ~/XQT/{ 88*48644Sbostic if ($1 ~ /uucp|daemon|root|news/ || $7 != "rmail") 89*48644Sbostic continue 90*48644Sbostic printf("%s\t%s\t%-8s\t%s!%s\n",substr($3,2,index($3,"-")-2),substr($3,index($3,"-")+1,5),$1,$2,$7)>>"/tmp/cmds" 91*48644Sbostic} 92*48644Sbostic$10 ~/secs/ { 93*48644Sbostic curtime = substr($4, 5, 6) 94*48644Sbostic dtmp = curtime - int($9) - lasttime[$2] 95*48644Sbostic if (dtmp > 0 && dtmp < 20) 96*48644Sbostic dead[$2] += dtmp 97*48644Sbostic lasttime[$2] = curtime 98*48644Sbostic live[$2] += $9 99*48644Sbostic} 100*48644Sbostic{ 101*48644Sbostic n = index ($3, "/") 102*48644Sbostic thismon = 0 103*48644Sbostic if (n > 0 ) { 104*48644Sbostic thismon = int(substr($3, 2, n-2)) 105*48644Sbostic if (lmon < thismon) 106*48644Sbostic lmon = thismon 107*48644Sbostic if (thismon < fmon) 108*48644Sbostic fmon = thismon 109*48644Sbostic } 110*48644Sbostic m = index ($3, "-") 111*48644Sbostic n++ 112*48644Sbostic thisday = 0 113*48644Sbostic if( (m-n) > 0 ) { 114*48644Sbostic thisday = int(substr($3, n, m-n)) 115*48644Sbostic if ((lday < thisday) && (lmon == thismon) || ldaymon != lmon) { 116*48644Sbostic lday = thisday 117*48644Sbostic ldaymon = thismon 118*48644Sbostic } 119*48644Sbostic if ((thisday < fday) && (fmon == thismon) || fdaymon != fmon) { 120*48644Sbostic fday = thisday 121*48644Sbostic fdaymon = thismon 122*48644Sbostic } 123*48644Sbostic } 124*48644Sbostic thistime = substr($3,m+1,5) 125*48644Sbostic if ((ltime < thistime) && (lmon == thismon) && (lday == thisday)) 126*48644Sbostic ltime = thistime 127*48644Sbostic if ((thistime < ftime) && (fmon == thismon) && (fday == thisday)) 128*48644Sbostic ftime = thistime 129*48644Sbostic} 130*48644SbosticEND{ 131*48644Sbostic printf("\n\t\t\t\tUUCP Traffic Summary\n\n") 132*48644Sbostic printf("\t\t\t\tFrom %d/%d %s To %d/%d %s\n\n",fmon,fday,ftime,lmon,lday,ltime) 133*48644Sbostic printf("\t Calls Minutes Files Bytes Effective Unused\n") 134*48644Sbostic printf("Site[Failed] To/From To/From To/From Sent/Received Baudrate Bandwidth\n") 135*48644Sbostic for( i in startup ){ 136*48644Sbostic if(seconds[i]== 0)seconds[i]++ 137*48644Sbostic if(dead[i]+live[i]) 138*48644Sbostic percent = dead[i]*100/(dead[i]+live[i]) 139*48644Sbostic else 140*48644Sbostic percent = 0 141*48644Sbostic if (failed[i] || retries[i]) { 142*48644Sbostic temp = i "[" failed[i] 143*48644Sbostic if (retries[i]) 144*48644Sbostic temp = temp "/" retries[i] "]" 145*48644Sbostic else 146*48644Sbostic temp = temp "]" 147*48644Sbostic } else 148*48644Sbostic temp = i 149*48644Sbostic printf("%-12s %3d/%-3d %5d/%-5d %4d/%-4d %8d/%-8d %6d %5d%%\n",\ 150*48644Sbostic temp,numcallto[i],numcallby[i],\ 151*48644Sbostic totcallto[i],totcallby[i],\ 152*48644Sbostic sentfiles[i],recfiles[i],\ 153*48644Sbostic sentbytes[i],recbytes[i],\ 154*48644Sbostic (recbytes[i]+sentbytes[i])*8/seconds[i],\ 155*48644Sbostic percent) 156*48644Sbostic } 157*48644Sbostic printf("\n\n\n\t\t\t\tOriginating Users\n\n") 158*48644Sbostic printf("User\t\t Minutes Files Bytes\n\n") 159*48644Sbostic if (havout == 1) { 160*48644Sbostic for (i in outuse) { 161*48644Sbostic printf("%-21s %5d %7d %8d\n", i,\ 162*48644Sbostic (outusesecs[i]+30)/60,\ 163*48644Sbostic outusefiles[i], outusebytes[i]) >> "/tmp/outuse" 164*48644Sbostic } 165*48644Sbostic } 166*48644Sbostic if (havin == 1) { 167*48644Sbostic for (i in inuse) { 168*48644Sbostic printf("%-21s %5d %7d %8d\n", i,\ 169*48644Sbostic (inusesecs[i]+30)/60,\ 170*48644Sbostic inusefiles[i], inusebytes[i]) >> "/tmp/inuse" 171*48644Sbostic } 172*48644Sbostic } 173*48644Sbostic}' 174*48644Sbostic 175*48644Sbosticsort /tmp/outuse 176*48644Sbosticecho " " 177*48644Sbosticsort /tmp/inuse 178*48644Sbosticecho " " 179*48644Sbosticecho " " 180*48644Sbosticecho " " 181*48644Sbosticecho " Long Distance Calls" 182*48644Sbosticecho 183*48644Sbosticecho "To Day Start - End From Day Start - End" 184*48644Sbosticcat >/tmp/$$local<<!!! 185*48644Sbostic/^ut/d 186*48644Sbostic!!! 187*48644Sbosticsed -f /tmp/$$local /tmp/callsto | /bin/awk ' 188*48644Sbostic{ 189*48644Sbostic if (last == $1) 190*48644Sbostic pr = "" 191*48644Sbostic else { 192*48644Sbostic last = $1 193*48644Sbostic pr = $1 194*48644Sbostic } 195*48644Sbostic if (pr == "" && date == $2) 196*48644Sbostic pd = "" 197*48644Sbostic else { 198*48644Sbostic date = $2 199*48644Sbostic pd = $2 200*48644Sbostic } 201*48644Sbostic printf("%s\t%s\t%s - %s\n",pr,pd,$3,$5) 202*48644Sbostic}'>/tmp/$$a 203*48644Sbosticsed -f /tmp/$$local /tmp/callsfrom | /bin/awk ' 204*48644Sbostic{ 205*48644Sbostic if (last == $1) 206*48644Sbostic pr = "" 207*48644Sbostic else { 208*48644Sbostic last = $1 209*48644Sbostic pr = $1 210*48644Sbostic } 211*48644Sbostic if (pr == "" && date == $2) 212*48644Sbostic pd = "" 213*48644Sbostic else { 214*48644Sbostic date = $2 215*48644Sbostic pd = $2 216*48644Sbostic } 217*48644Sbostic printf("%s\t%s\t%s - %s\n",pr,pd,$3,$5) 218*48644Sbostic}'>/tmp/$$b 219*48644Sbosticpr -t -m /tmp/$$a /tmp/$$b | uniq 220*48644Sbosticrm -f /tmp/$$[ab] 221*48644Sbosticsed -e " 222*48644Sbostic/rmail seismo!/d 223*48644Sbostic/rmail rlgvax!/d 224*48644Sbostic/rmail rochester!/d 225*48644Sbostic/rmail umcp-cs!/d 226*48644Sbostic/rmail brl-tgr!/d 227*48644Sbostic/rmail brl-vgr!/d 228*48644Sbostics/)$// 229*48644Sbostic" /tmp/cmds >/tmp/$$c 230*48644Sbosticif [ -s /tmp/$$c ] 231*48644Sbosticthen 232*48644Sbostic echo " " 233*48644Sbostic echo " " 234*48644Sbostic echo " " 235*48644Sbostic echo " Outgoing Mail from Other Sites" 236*48644Sbostic echo 237*48644Sbostic echo "Day Time From To" 238*48644Sbostic cat /tmp/$$c 239*48644Sbosticfi 240*48644Sbosticrm -f /tmp/cmds /tmp/$$* /tmp/callsto /tmp/callsfrom /tmp/inuse /tmp/outuse 241