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