home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
apps
/
bbs
/
smp_awk
/
logstat.awk
< prev
next >
Wrap
Text File
|
1995-01-01
|
7KB
|
206 lines
# Semper log statistics creator
# =============================
# (c) 28.12.1994 BoLuSoft, Borek Lupomesky
#
# E-mail: 2:423/71@fidonet.org
# 90:1200/1@nest.ftn
# borek@leo1.zlin.vutbr.cz
function app(strg,arr,curr) {
for(i=0;i<curr;i++) { if(arr[i]==strg) return i }
return -1;
}
function cmpadr(adr1,adr2) {
gsub("/",".",adr1);
gsub(":",".",adr1);
gsub("@",".",adr1);
gsub("/",".",adr2);
gsub(":",".",adr2);
gsub("@",".",adr2);
split(adr1,a1,".");
split(adr2,a2,".");
a1[5]=a1[5] "." a1[6];
a2[5]=a2[5] "." a2[6];
if(a2[5] < a1[5]) return 1; else if(a2[5] > a1[5]) return 0;
if(a2[1]+0 < a1[1]+0) return 2; else if(a2[1]+0 > a1[1]+0) return 0;
if(a2[2]+0 < a1[2]+0) return 3; else if(a2[2]+0 > a1[2]+0) return 0;
if(a2[3]+0 < a1[3]+0) return 4; else if(a2[3]+0 > a1[3]+0) return 0;
if(a2[4]+0 < a1[4]+0) return 5; else if(a2[4]+0 > a1[4]+0) return 0;
return 0
}
function getnum(s) {
a=length(s);
b="0";
for(i=1;i<=a;i++) {
c=substr(s,i,1);
if(c>="0" && c<="9") b=b c;
}
return b+0;
}
function gettime(s) {
a=length(s);
b=index(s,":"); d="0";
for(i=1;i<=b;i++) {
c=substr(s,i,1);
if(c>="0" && c<="9") d=d c;
}
ret=(d+0)*60;
i++;
d="0";
for(;i<=a;i++) {
c=substr(s,i,1);
if(d>="0" && d<="9") d=d c;
}
return ret+d;
}
function iosize(i,o) {
if(i<1024) { si=""; }
else { i/=1024; si="K"; }
if(o<1024) { so=""; }
else { o/=1024; so="K"; }
ti=sprintf("%d%s",i,si);
to=sprintf("%d%s",o,so);
return sprintf("%6s/%6s",ti,to);
}
BEGIN {
ring=0; addr="-failed-"; failed=0; conns=0; online=0; inb=0; outb=0;
foutb=0; finb=0; curr=0; valid=0; bbscalls=0; files=0;
sfbytes=0; rfbytes=0; sfiles=0; rfiles=0;
t_if=0; t_of=0; t_ib=0; t_ob=0;
}
/Dialing/ { ring=0 }
/NO CARRIER/ { ring=0 }
/Ring$/ { ring=1 }
/ Connect /,/Duration of connect/ {
if($6 == "Connect") {
split($7,constrg,"/");
time=$2 " " $3 " " $4;
}
if($0 ~ "branch to BBS") {
addr="BBS caller"
}
if($0 ~ "Remote Address") {
addr=$8;
valid=1;
if(DOMAIN != "") {
if($8 !~ DOMAIN) valid=0;
}
}
if($6 == "Rcvd") {
rfbytes+=getnum($9);
rftime+=gettime($10);
rfiles++;
}
if($6 == "Sent") {
sfbytes+=getnum($9);
sftime+=gettime($10);
sfiles++;
}
if($0 ~ "System :") {
sysname=""
for(i=8;i<=NF;i++) sysname=sysname " " $i;
}
if($0 ~ "Duration of connect") {
if(addr=="BBS caller") {
bbscalls+=1;
if(DOMAIN!="") {
ring=0;
addr="-failed-"
next;
}
}
if(valid) {
conns++;
split($9,durarr,":");
duration=(durarr[1]*60)+durarr[2];
online+=duration;
if(NF==11) {
toll=$11;
sub(/\(/," ",toll);
} else toll=0;
tbill+=toll;
if((addr!="-failed-")||(DOMAIN=="")) {
iobytes=iosize(rfbytes,sfbytes);
if(ring) {
printf("%s %5s %3s %-28s %2d/%2d %12s %3d:%02d\n", \
time,constrg[1],"IN",addr,rfiles,sfiles,iobytes,durarr[1],durarr[2]);
} else {
printf("%s %5s %3s %-28s %2d/%2d %12s %3d:%02d %.2f\n", \
time,constrg[1],"OUT",addr,rfiles,sfiles,iobytes,durarr[1],durarr[2],toll);
}
}
if(addr=="-failed-") {
finb+=ring ? 1:0;
foutb+=ring ? 0:1;
} else if(addr!="BBS caller") {
i=app(addr,aar,curr);
if(i>=0) {
iar[i]+=ring ? 1:0; oar[i]+=ring ? 0:1;
bill[i]+=toll; odur[i]+=ring ? 0:duration;
rfbar[i]+=rfbytes; sfbar[i]+=sfbytes;
rfar[i]+=rfiles; sfar[i]+=sfiles;
} else {
i=curr++;
aar[i]=addr;
iar[i]=ring ? 1:0; oar[i]=ring ? 0:1; snar[i]=sysname;
bill[i]=toll; odur[i]=ring ? 0:duration;
rfbar[i]=rfbytes; sfbar[i]=sfbytes;
rfar[i]=rfiles; sfar[i]=sfiles;
}
inb+=ring ? 1:0;
outb+=ring ? 0:1;
t_if+=rfiles; t_of+=sfiles;
t_ib+=rfbytes; t_ob+=sfbytes;
}
}
ring=0; addr="-failed-";
sfiles=0; sfbytes=0; sftime=0;
rfiles=0; rfbytes=0; rftime=0;
}
}
END {
for(i=0;i<curr;i++) {
for(j=i;j<curr;j++) {
if(cmpadr(aar[i],aar[j])) {
taar=aar[i]; tsnar=snar[i]; tiar=iar[i]; toar=oar[i]; tb=bill[i]; todur=odur[i];
trfbar=rfbar[i]; tsfbar=sfbar[i]; trfar=rfar[i]; tsfar=sfar[i];
aar[i]=aar[j]; snar[i]=snar[j]; iar[i]=iar[j]; oar[i]=oar[j]; bill[i]=bill[j]; odur[i]=odur[j];
rfbar[i]=rfbar[j]; sfbar[i]=sfbar[j]; rfar[i]=rfar[j]; sfar[i]=sfar[j];
aar[j]=taar; snar[j]=tsnar; iar[j]=tiar; oar[j]=toar; bill[j]=tb; odur[j]=todur;
rfbar[j]=trfbar; sfbar[j]=tsfbar; rfar[j]=trfar; sfar[j]=tsfar;
}
}
}
print("===========================================================================================================");
print("Address | System | Calls | Files | Bytes | DOC | Bill ");
print(" | | I | O | I | O | I | O | | ");
print("---------------------------+-------------------------+----+----+----+----+-------+------+--------+---------");
for(i=0;i<curr;i++) {
iobytes=iosize(rfbar[i],sfbar[i]);
printf("%-26s |%-24.24s |%3d |%3d |%3d |%3d |%12s | %3d:%02d | %4.2f\n",aar[i],snar[i],iar[i],oar[i],rfar[i],sfar[i],iobytes,odur[i]/60,odur[i]%60,bill[i]);
}
print("===========================================================================================================");
if(DOMAIN=="") {
printf(" Total connections: %d (failed %d, %.2f%%)\n",conns,foutb+finb,(foutb+finb)/conns*100);
printf(" Inbound calls: %d, %.2f%% (failed %d,%.2f%%)\n",inb,(conns ? inb/conns*100:0),finb,(inb ? finb/inb*100:0));
printf(" Outbound calls: %d, %.2f%% (failed %d, %.2f%%)\n",outb,(conns ? outb/conns*100:0),foutb,(outb ? foutb/outb*100:0));
} else {
printf(" Total connections: %d\n",conns);
printf(" Inbound calls: %d\n",inb);
printf(" Outbound calls: %d\n",outb);
}
printf(" Total files (in/out): %d / %d\n",t_if,t_of);
printf(" Total bytes (in/out): %dK / %dK\n",t_ib/1024,t_ob/1024);
if(DOMAIN=="")
printf(" BBS callers: %d\n",bbscalls);
printf(" Total connection time: %d:%02d\n",online/60,online%60);
printf(" Total bill: %.2f\n",tbill);
td=strftime("%H:%M %d.%m.%y");
printf("\nStatistics created: %s",td);
}