📄 mkbrokerstats.pl.in
字号:
#!@PERL@## Generates HTML stats for a broker database.## Usage:# mkbrokerstats.pl broker-dir > stats.html## $Id: mkbrokerstats.pl,v 2.2 1997/04/21 16:47:45 sxw Exp $#$Usage = "$0 broker-dir > stats.html";# An array for the type field in Collection.conf@ColTypes = ( "Gatherer", "Gatherer", "Gatherer", "Gatherer", "Broker", "Broker", "Broker", "Broker");# Get to the correct directory, and find the name of this Broker#$dir = shift || die "$Usage\n";exit (1) if ( ! -d $dir );chdir ($dir) || die "$Usage\n";@X = split ('/', `pwd`);chop ($Broker = pop (@X));# Count # of objects in Registry#$CMD="dumpregistry -count .|";open(CMD) || die "Cannot run $CMD: $!\n";while (<CMD>) { $NObjs = $1 if (/VALID ENTRIES: (\d+), (\d+)/o);}close CMD;# Find unique servers from the Registry#$multiples = 0;$CMD="dumpregistry .|";open (CMD) || die "Cannot run $CMD: $!\n";while (<CMD>) { if (/^URL: (\w+:\/\/[^\/]+)\/.*$/o) { $Servers{$1}++; $multiples = 1 if (!$multiples && $Servers{$1} > 1); }}close CMD;# Conserves some memory and CPU by only using Servers with > 1 object$NServers=0;while (($x, $value) = each %Servers) { $NServers++; # count all Servers delete $Servers{$x} if ($Servers{$x} == 1 && $multiples && $NServers > 20);}# Read broker.conf for various things#$CF="admin/broker.conf";open (CF) || die "$CF: $!\n";while (<CF>) { next if (/^#/o || /^\s*\n$/o); $ColTime = $1 if (/Collection-Time ([\d:]+)/o); $CleanRate = $1 if (/Clean-Rate (\d+)/o); $ColRate = $1 if (/Collection-Rate (\d+)/o);}close CF;$CleanRate = int ($CleanRate / 3600);$ColRate = int ($ColRate / 3600);# Print out some HTML#print <<EOF;<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML><HEAD><TITLE>$Broker Broker Statistics</TITLE></HEAD><BODY><H2>$Broker Broker Statistics</H2>EOFprint "There are <B>$NObjs</B> objects in the database";# Hack, mostly for news: URL's. The %Servers array is only filled with# URL's having a hostname. So, if %Serves is empty, don't print the# list.#if ($NServers) { $N=0; print "\nfrom <B>$NServers</B> Internet server(s), including:<P>\n"; print "<UL>\n"; foreach $x (sort {$Servers{$b} <=> $Servers{$a}} keys %Servers) { last if ($N++ > 10); printf "<LI> <A HREF=\"%s/\">\n\t%s/</A> (%d objects)\n", $x, $x, $Servers{$x}; } print "</UL>\n";} else { print ".<P>\n";}print <<EOF;Collection occurs every <B>$ColRate</B> hours, at<B>$ColTime</B>.<P>The broker checks for expired objects every <B>$CleanRate</B> hours.<P>Objects are collected from the following Harvest servers:<UL>EOF$CF="admin/Collection.conf";open (CF) || die "$CF: $!\n";while (<CF>) { next if (/^#/o || /^\s*\n$/o); chop $_; ($host, $port, $type, $query) = split; if ($ColTypes[$type] eq "Gatherer") { system "gather -info $host $port | info-to-html.pl > $host.$port.html"; } else { open(OUT, "> $host.$port.html") || die "$host.$port.html: $!\n"; print OUT <<EOM;<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML><strong>Sorry, no statistics for this Broker are available.</strong></HTML>EOM close(OUT); chmod 0664, "$host.$port.html"; } printf "<LI> <A HREF=\"%s.%d.html\">\n\t[%s] %s, port %d</A>\n", $host, $port, $ColTypes[$type], $host, $port;}close CF;$time0 = localtime;print <<EOF;</UL><HR>Generated $time0</BODY></HTML>EOFexit 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -