#!/bin/sh PATH=:/bin:/usr/bin:/usr/ucb export PATH rm -f /tmp/cmds /tmp/callsto /tmp/callsfrom /tmp/inuse /tmp/outuse touch /tmp/cmds /tmp/inuse /tmp/outuse cd /usr/spool/uucp if [ $# -gt 0 ] then what="$1/uucico/* $1/uux*/* $1/xferstats/*" else if [ -f LOGFILE ] then what="LOGFILE SYSLOG" else what="LOG/uucico/* LOG/uux*/* LOG/xferstats/*" fi fi sed -e "s/PATH=.*PATH;// /REQUEST/d" $what | /bin/awk ' BEGIN { fmon = fday = ftime = 99 lmon = lday = ltime = 0 } $4 ~ /SUCCEEDED|OK/ { t = substr($3,index($3,"-")+1,5) split(t,time,":") if($5 !~ /conversation/) { startup[$2] = time[1]*60+time[2] date[$2] = substr($3, 2, index($3,"-")-2) } } $4 ~ /FAILED|CAUGHT|OK|TIMEOUT/ { if(startup[$2] == 0 || $5 ~ /startup/) continue t = substr($3,index($3,"-")+1,5) split(t,time,":") elapsed = time[1]*60+time[2] - startup[$2] if (elapsed < 0 ) elapsed += 24*60 if (elapsed == 0) elapsed = 1 if(callto[$2] ){ totcallto[$2] += elapsed numcallto[$2]++ 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" }else{ totcallby[$2] += elapsed numcallby[$2]++ 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" } callto[$2] = 0 startup[$2] = 0 } $4 ~ /SUCCEEDED/{ if ($5 ~ /call/) callto[$2]++ } $4 ~ /FAILED|CAUGHT/{ if ($5 ~ /call|conversation|SIGNAL/ ) failed[$2]++ } $5 ~ /sent/{ sentbytes[$2] += $7 sentfiles[$2] ++ seconds[$2] += $9 retries[$2] += $11 havout = 1 outuse[$1] = $1 outusebytes[$1] += $7 outusefiles[$1] ++ outusesecs[$1] += $9 } $5 ~ /received/{ recbytes[$2] += $7 recfiles[$2] ++ seconds[$2] += $9 retries[$2] += $11 havin = 1 inuse[$2 "!" $1] = $2 "!" $1 inusebytes[$2 "!" $1] += $7 inusefiles[$2 "!" $1] ++ inusesecs[$2 "!" $1] += $9 } $5 ~/XQT/{ if( $7 ~ /!|@/ && $6 ~ /rmail/) 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" } $4 ~/XQT/{ if ($1 ~ /uucp|daemon|root|news/ || $7 != "rmail") continue 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" } $10 ~/secs/ { curtime = substr($4, 5, 6) dtmp = curtime - int($9) - lasttime[$2] if (dtmp > 0 && dtmp < 20) dead[$2] += dtmp lasttime[$2] = curtime live[$2] += $9 } { n = index ($3, "/") thismon = 0 if (n > 0 ) { thismon = int(substr($3, 2, n-2)) if (lmon < thismon) lmon = thismon if (thismon < fmon) fmon = thismon } m = index ($3, "-") n++ thisday = 0 if( (m-n) > 0 ) { thisday = int(substr($3, n, m-n)) if ((lday < thisday) && (lmon == thismon) || ldaymon != lmon) { lday = thisday ldaymon = thismon } if ((thisday < fday) && (fmon == thismon) || fdaymon != fmon) { fday = thisday fdaymon = thismon } } thistime = substr($3,m+1,5) if ((ltime < thistime) && (lmon == thismon) && (lday == thisday)) ltime = thistime if ((thistime < ftime) && (fmon == thismon) && (fday == thisday)) ftime = thistime } END{ printf("\n\t\t\t\tUUCP Traffic Summary\n\n") printf("\t\t\t\tFrom %d/%d %s To %d/%d %s\n\n",fmon,fday,ftime,lmon,lday,ltime) printf("\t Calls Minutes Files Bytes Effective Unused\n") printf("Site[Failed] To/From To/From To/From Sent/Received Baudrate Bandwidth\n") for( i in startup ){ if(seconds[i]== 0)seconds[i]++ if(dead[i]+live[i]) percent = dead[i]*100/(dead[i]+live[i]) else percent = 0 if (failed[i] || retries[i]) { temp = i "[" failed[i] if (retries[i]) temp = temp "/" retries[i] "]" else temp = temp "]" } else temp = i printf("%-12s %3d/%-3d %5d/%-5d %4d/%-4d %8d/%-8d %6d %5d%%\n",\ temp,numcallto[i],numcallby[i],\ totcallto[i],totcallby[i],\ sentfiles[i],recfiles[i],\ sentbytes[i],recbytes[i],\ (recbytes[i]+sentbytes[i])*8/seconds[i],\ percent) } printf("\n\n\n\t\t\t\tOriginating Users\n\n") printf("User\t\t Minutes Files Bytes\n\n") if (havout == 1) { for (i in outuse) { printf("%-21s %5d %7d %8d\n", i,\ (outusesecs[i]+30)/60,\ outusefiles[i], outusebytes[i]) >> "/tmp/outuse" } } if (havin == 1) { for (i in inuse) { printf("%-21s %5d %7d %8d\n", i,\ (inusesecs[i]+30)/60,\ inusefiles[i], inusebytes[i]) >> "/tmp/inuse" } } }' sort /tmp/outuse echo " " sort /tmp/inuse echo " " echo " " echo " " echo " Long Distance Calls" echo echo "To Day Start - End From Day Start - End" cat >/tmp/$$local</tmp/$$a sed -f /tmp/$$local /tmp/callsfrom | /bin/awk ' { if (last == $1) pr = "" else { last = $1 pr = $1 } if (pr == "" && date == $2) pd = "" else { date = $2 pd = $2 } printf("%s\t%s\t%s - %s\n",pr,pd,$3,$5) }'>/tmp/$$b pr -t -m /tmp/$$a /tmp/$$b | uniq rm -f /tmp/$$[ab] sed -e " /rmail seismo!/d /rmail rlgvax!/d /rmail rochester!/d /rmail umcp-cs!/d /rmail brl-tgr!/d /rmail brl-vgr!/d s/)$// " /tmp/cmds >/tmp/$$c if [ -s /tmp/$$c ] then echo " " echo " " echo " " echo " Outgoing Mail from Other Sites" echo echo "Day Time From To" cat /tmp/$$c fi rm -f /tmp/cmds /tmp/$$* /tmp/callsto /tmp/callsfrom /tmp/inuse /tmp/outuse