Annotation of 43BSD/usr.bin/uucp/UUAIDS/uucpsummary, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.