dsastats.dist
来自「ftam等标准协议服务器和客户端的源代码。」· DIST 代码 · 共 1,058 行 · 第 1/2 页
DIST
1,058 行
originators[origuser] = 0 } if (substr($0, 1, 6) == "remote") remote = "TRUE" else remote = "FALSE"}/.* bind.*\(anonymous\).*/ { if (substr($0, 1, 6) == "remote") remoteanon++ else localanon++ if ($2 == "dap") gotdspbind = "FALSE" else gotdspbind = "TRUE" usernames["anonymous"]++}/.* bind.*\(no auth\).*/ { if (substr($0, 1, 6) == "remote") if ($2 == "dap") remotenoauthdap++ else remotenoauthdsp++ else if ($2 == "dap") localnoauthdap++ else localnoauthdsp++}/.* bind.*\(simple\).*/ { if (substr($0, 1, 6) == "remote") remotesimple++ else localsimple++}/.* bind.*\(protected\).*/ { if (substr($0, 1, 6) == "remote") remoteprotected++ else localprotected++}/ bind.*\(no auth\)| bind.*\(simple\)/ { n = index($0, ":") username = substr($0, n+2) if ($2 == "dap") { gotdspbind = "FALSE" usernames[username]++ } else gotdspbind = "TRUE"}#/dap originator:/ {# n = index($0, ":")# username = substr($0, n+3)# if (username != "anonymous")# originators[username]++#}/^ getedb/ { getedb++}/^ modifyrdn / { if (remote == "TRUE") rmodifyrdnops++ else lmodifyrdnops++ opDN = substr($0, 13)}/^ add/ { if (remote == "TRUE") raddops++ else laddops++ opDN = substr($0, 7)}/^ modify / { if (remote == "TRUE") rmodifyops++ else lmodifyops++ opDN = substr($0, 10)}/^ search/ { if (remote == "TRUE") rsearchops++ else lsearchops++ opDN = substr($0, 10)}/^ list/ { if (remote == "TRUE") rlistops++ else llistops++ opDN = substr($0, 8)}/^ read/ { if (remote == "TRUE") rreadops++ else lreadops++ opDN = substr($0, 8)}/^ compare/ { if (remote == "TRUE") rcompareops++ else lcompareops++ opDN = substr($0, 11)}/^ read|^ list|^ search|^ modify|^ add|^ compare/ { n = split(opDN, RDNparts, "@") if (substr(RDNparts[n], 1, 2) == "cn") if (n < 3) #assume a DSA entry { if ($1 == "read") dsaread++ else dsaother++ next } else { opDN = RDNparts[1] for (i = 2; i < n-1; i++) opDN = opDN "@" RDNparts[i] } # was this a system or real use? if (gotdspbind == "TRUE") { # get the originator getline n = index($0, ":") origname = substr($0, n+3) if (origname == username) { spotshadows++ next } else originators[origname]++ } else origname = username techfound = "false" for (techperson in techies) if (techperson == origname) { techfound = "true" break } if (techfound == "true") sysaccessed[opDN]++ else realaccessed[opDN]++}END {# pick up any last dsp originators if (gotdspbind == "TRUE") for (origuser in originators) if (originators[origuser] != 0) { usernames[origuser]++ if (origuser == "anonymous") if (remote == "TRUE") remoteanon++ else localanon++ originators[origuser] = 0 } if ((savetotals == "TRUE") || (archive == "TRUE")) { # write out working totals print "dsaname " dsaname > totfile print "starttime " starttime >> totfile print "endtime " endtime >> totfile printf "localanon %d\n", localanon >> totfile printf "remoteanon %d\n", remoteanon >> totfile printf "localnoauthdap %d\n", localnoauthdap >> totfile printf "remotenoauthdap %d\n", remotenoauthdap >> totfile printf "localnoauthdsp %d\n", localnoauthdsp >> totfile printf "remotenoauthdsp %d\n", remotenoauthdsp >> totfile printf "localsimple %d\n", localsimple >> totfile printf "remotesimple %d\n", remotesimple >> totfile printf "localprotected %d\n", localprotected >> totfile printf "remoteprotected %d\n", remoteprotected >> totfile printf "lreadops %d\n", lreadops >> totfile printf "rreadops %d\n", rreadops >> totfile printf "lcompareops %d\n", lcompareops >> totfile printf "rcompareops %d\n", rcompareops >> totfile printf "llistops %d\n", llistops >> totfile printf "rlistops %d\n", rlistops >> totfile printf "lsearchops %d\n", lsearchops >> totfile printf "rsearchops %d\n", rsearchops >> totfile printf "lmodifyops %d\n", lmodifyops >> totfile printf "rmodifyops %d\n", rmodifyops >> totfile printf "lmodifyrdnops %d\n", lmodifyrdnops >> totfile printf "rmodifyrdnops %d\n", rmodifyrdnops >> totfile printf "laddops %d\n", laddops >> totfile printf "raddops %d\n", raddops >> totfile printf "getedbs %d\n", getedb >> totfile printf "techbinds %d\n", techbinds >> totfile printf "dsaread %d\n", dsaread >> totfile printf "dsaother %d\n", dsaother >> totfile printf "spotshadows %d\n", spotshadows >> totfile for (user in usernames) printf "usernames %s:%s\n", user, usernames[user] >> totfile for (dn in sysaccessed) printf "sysaccessed %s:%s\n", dn, sysaccessed[dn] >> totfile for (dn in realaccessed) printf "realaccessed %s:%s\n", dn, realaccessed[dn] >> totfile } if (noreport == "TRUE") exit printf "Summary of calls to " if (alldsas == "TRUE") printf "all DSAs" else printf "DSA <%s>", dsaname printf "\nFrom %s to %s\n\n", starttime, endtime printf "%-30s%8s%8s\n\n", "No. of binds", "local", "remote" printf "%-30s%8d%8d\n", "Anonymous", localanon, remoteanon printf "%-30s%8d%8d\n", "Unauth name DAP", localnoauthdap, remotenoauthdap printf "%-30s%8d%8d\n", "Unauth name DSP",localnoauthdsp, remotenoauthdsp printf "%-30s%8d%8d\n", "Simple", localsimple, remotesimple printf "%-30s%8d%8d\n", "Protected", localprotected, remoteprotected printf "\nNo. of operations\n" printf "%-30s%8d%8d\n", "Reads", lreadops, rreadops printf "%-30s%8d%8d\n", "Compares", lcompareops, rcompareops printf "%-30s%8d%8d\n", "Lists", llistops, rlistops printf "%-30s%8d%8d\n", "Searches", lsearchops, rsearchops printf "%-30s%8d%8d\n", "Modifies", lmodifyops, rmodifyops printf "%-30s%8d%8d\n", "ModifyRDNs", lmodifyrdnops, rmodifyrdnops printf "%-30s%8d%8d\n", "Adds", laddops, raddops printf "%-30s%16d\n", "GetEDBs", getedb#print "have this list of users"#for (user in usernames)# print user " " usernames[user]#print "" for (user in usernames) { techfound = "false" for (techperson in techies) if (techperson == user) { techfound = "true" break } if (techfound == "true") techbinds += usernames[user] else { n = split(user, RDNparts, "@") if (n == 1) userorg = user else userorg = RDNparts[1] ", " RDNparts[2] userorgnames[userorg]++ userorgbinds[userorg] += usernames[user] } } printf "\nSystem usage (calls received)\n\n" printf "%-38s%8d\n", "Binds by Directory technicians", techbinds printf "%-38s%8d\n", "Reads of DSA entries", dsaread printf "%-38s%8d\n", "Other ops on DSA entries", dsaother printf "%-38s%8d\n", "Getedb operations", getedb printf "%-38s%8d\n", "Spot shadows", spotshadows printf "\nWho has used the directory?\n" if (summary == "TRUE") printf "*Real* usage by country\n" else printf "*Real* usage by organisation\n" printf "%9s%10s\n", "No. users", "No. binds" for (name in userorgnames) if (userorgnames[name] != 0) { n = split(name, RDNparts, ",") if ((n == 1) || (summary == "TRUE")) { realuse[RDNparts[1]] += userorgnames[name] realbinds[RDNparts[1]] += userorgbinds[name] } else { realuse[name] += userorgnames[name] realbinds[name] += userorgbinds[name] } } for (dn in realuse) if (realuse[dn] != 0) { n++ sortarray[n] = dn } m = n for (i = 1; i<n-1; i++) { change = "FALSE" for (j=1; j <m; j++) if (sortarray[j+1] < sortarray[j]) { tmp = sortarray[j] sortarray[j] = sortarray[j+1] sortarray[j+1] = tmp change = "TRUE" } if (change == "FALSE") break m-- } for (i = 1; i <= n; i++) { if (realuse[sortarray[i]] != 0) printf "%9d%10d %s\n", \ realuse[sortarray[i]], realbinds[sortarray[i]], sortarray[i] realuse[sortarray[i]] = 0 }# for (name in userorgnames)# if (userorgnames[name] != 0)# printf "%9d%10d %s\n", userorgnames[name], userorgbinds[name], name printf "\nWhich parts of the Directory have been accessed - real usage?\n" printf "%s %s\n", "No. ops", "Subtree" if (summary == "FALSE") { printf "Local subtree\n" if (realaccessed[localorg] != 0) { printf "%7d %s\n", realaccessed[localorg], localorg realaccessed[localorg] = 0 } n = 0 for (dn in realaccessed) if ((realaccessed[dn] != 0) && \ (substr(dn, 1, length(localorg)) == localorg)) { n++ sortarray[n] = dn } m = n for (i = 1; i<n-1; i++) { change = "FALSE" for (j=1; j <m; j++) if (sortarray[j+1] < sortarray[j]) { tmp = sortarray[j] sortarray[j] = sortarray[j+1] sortarray[j+1] = tmp change = "TRUE" } if (change == "FALSE") break m-- } for (i = 1; i <= n; i++) { printf "%7d %s\n", realaccessed[sortarray[i]], sortarray[i] realaccessed[sortarray[i]] = 0 } printf "\nOther parts of the DIT\n" } for (dn in realaccessed) if (realaccessed[dn] != 0) { n = split(dn, RDNparts, "@") if (substr(RDNparts[1], 1, 2) == "c=") if ((n == 1) || (summary == "TRUE")) otherditaccess[RDNparts[1]] += realaccessed[dn] else if (substr(RDNparts[2], 1, 2) == "o=") otherditaccess[RDNparts[1] "@" RDNparts[2]] += realaccessed[dn] } if (otherditaccess["root"] != 0) { printf "%7d %s\n", otherditaccess["root"], "root" otherditaccess["root"] = 0 } n = 0 for (dn in otherditaccess) if (otherditaccess[dn] != 0) { n++ sortarray[n] = dn } m = n for (i = 1; i<n-1; i++) { change = "FALSE" for (j=1; j <m; j++) if (sortarray[j+1] < sortarray[j]) { tmp = sortarray[j] sortarray[j] = sortarray[j+1] sortarray[j+1] = tmp change = "TRUE" } if (change == "FALSE") break m-- } for (i = 1; i <= n; i++) { printf "%7d %s\n", otherditaccess[sortarray[i]], sortarray[i] otherditaccess[sortarray[i]] = 0 } printf "\n\nWhich parts of the Directory have been accessed - system usage?\n" printf "%s %s\n", "No. ops", "Subtree" if (summary == "FALSE") { printf "Local subtree\n" if (sysaccessed[localorg] != 0) { printf "%7d %s\n", sysaccessed[localorg], localorg sysaccessed[localorg] = 0 } n = 0 for (dn in sysaccessed) if ((sysaccessed[dn] != 0) && \ (substr(dn, 1, length(localorg)) == localorg)) { n++ sortarray[n] = dn } m = n for (i = 1; i<n-1; i++) { change = "FALSE" for (j=1; j <m; j++) if (sortarray[j+1] < sortarray[j]) { tmp = sortarray[j] sortarray[j] = sortarray[j+1] sortarray[j+1] = tmp change = "TRUE" } if (change == "FALSE") break m-- } for (i = 1; i <= n; i++) { printf "%7d %s\n", sysaccessed[sortarray[i]], sortarray[i] sysaccessed[sortarray[i]] = 0 } printf "\nOther parts of the DIT\n" } for (dn in sysaccessed) if (sysaccessed[dn] != 0) { n = split(dn, RDNparts, "@") if ((n == 1) || (summary == "TRUE")) otherditaccess[RDNparts[1]] += sysaccessed[dn] else otherditaccess[RDNparts[1] "@" RDNparts[2]] += sysaccessed[dn] } if (otherditaccess["root"] != 0) { printf "%7d %s\n", otherditaccess["root"], "root" otherditaccess["root"] = 0 } n = 0 for (dn in otherditaccess) if (otherditaccess[dn] != 0) { n++ sortarray[n] = dn } m = n for (i = 1; i<n-1; i++) { change = "FALSE" for (j=1; j <m; j++) if (sortarray[j+1] < sortarray[j]) { tmp = sortarray[j] sortarray[j] = sortarray[j+1] sortarray[j+1] = tmp change = "TRUE" } if (change == "FALSE") break m-- } for (i = 1; i <= n; i++) { printf "%7d %s\n", otherditaccess[sortarray[i]], sortarray[i] otherditaccess[sortarray[i]] = 0 }} ' if [ $archive = "TRUE" ]; then ojourdwee=`date +%y%m%d%H%M%S` mv $logdir/$dsastub.stattot $logdir/dsastats.arch/$dsastub.$ojourdweefirm -f /tmp/dsastats$$.1 /tmp/dsastats$$.2 /tmp/dsastats$$.localorg
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?