⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 named_stats

📁 早期freebsd实现
💻
字号:
#!/afs/net/tools/@sys/perl## named_stats --- collect statistics for the MIT nameservers.## This program connects to a pre-arranged port on four hosts and dumps the # name daemon statistics in a nice tabular form.  This program has been# written for MIT.  You will need to change things to make them work for# your site.## Written by Theodore Ts'o, Copyright 1991.  ## Use this code however you want, as long as you don't try to make# money off of it and as long as you don't claim it's yours.### Change this to be whatever port number you assign in /etc/services#$default_nstats_port = XXXXX;## Change this to be the list of hosts that you're interested in.#@hosts = ("bitsy.mit.edu", "strawb.mit.edu", "w20ns.mit.edu", 	"lithium.lcs.mit.edu");@querytypes = ("A", "NS", "MD", "MF", "CNAME", "SOA", "MB", "MG",	"MR", "NULL", "WKS", "PTR", "HINFO", "MINFO", "MX", "TXT",	"UINFO", "UID", "GID", "UNSPEC", "UNSPECA", 	"AXFR", "MAILB", "MAILA", "ANY");$boottime = "time since boot (secs)";($name, $aliases, $nstats_port) = getservbyname("nstats", 'tcp');if (!$nstats_port) {	$nstats_port = $default_nstats_port;}grep(s/$/ queries/, @querytypes);foreach $query (@querytypes) {	$added{$query} = 1;}foreach $host (@hosts) {	($hostname = $host) =~ s/\..*//;	push(@hostnames, $hostname);	($name, $aliases, $type, $len, $thisaddr) = gethostbyname($host);	$port = $nstats_port;	&mkport($thisaddr,$port);	$dateline = <SERVER>;	$dateline =~ s/###//;	printf("%8-s:%s", $hostname,$dateline);	while (<SERVER>) {		chop;		($num, $var) = /([0-9]+)\s+(.*)/;		$data{$hostname, $var} = $num;		$total{$var} += $num;		$seen{$var} = 1;		if (!$added{$var}) {			$added{$var} = 1;			push(@varnames, $var);		}	}}print "\n";printf("%25-s", "");foreach $host (@hostnames) {	printf("%10s", $host);}printf("%10s", "TOTAL");print "\n";foreach $var (@varnames,@querytypes) {	if ((!$seen{$var}) || ($total{$var} == 0)) {		next;	}	printf("%25-s", $var);	foreach $host (@hostnames) {		$num = $data{$host, $var};		printf("%10d", $num);	}	#	# Totals don't make sense for some stats	#	if ($var =~ /^time since/) {		print "\n";		next;	}	printf("%10s", $total{$var});	print "\n";}## End of main program, subroutines begin here#sub mkport {  $port = $_[1];  $saddr = $_[0];#  print "$saddr,$port\n";  $sockaddr = 'S n a4 x8';  $sin = pack($sockaddr, 2, $port, $saddr);  socket(SERVER, 2, 1, 0) || ((print "socket:$!\n"), return $FAIL);#  setsockopt(SERVER,&SOL_SOCKET,&SO_KEEPALIVE,1)#       || (print "Server setsockopt failed\n");  connect(SERVER, $sin) || ((print "connect:$!\n"), return $FAIL);  $sockname = getsockname(SERVER)        || ((print "getsockname:$!\n"), return $FAIL);  ($family, $port, $addr) =  unpack($sockaddr, $sockname);  @addr = unpack("CCCC", $addr);#  select(SERVER); $| = 1; select(STDOUT); $| = 1;  $connecting = 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -