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 + -
显示快捷键?