#!/usr/local/bin/perl -w # -*- perl -*- # Cricket: a configuration, polling and data display wrapper for RRD files # # Copyright (C) 1998 Jeff R. Allen and WebTV Networks, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. BEGIN { my $programdir = (($0 =~ m:^(.*/):)[0] || "./") . ".."; eval "require '$programdir/cricket-conf.pl'"; eval "require '/usr/local/etc/cricket-conf.pl'" unless $Common::global::gInstallRoot; $Common::global::gInstallRoot ||= $programdir; } use lib "$Common::global::gInstallRoot/lib"; use Common::Options; use Common::Log; use Common::global; use ConfigTree::Cache; Common::Options::commonOptions(); Common::Log::setLevel('debug'); $Common::global::gCT = new ConfigTree::Cache; $gCT = $Common::global::gCT; $gCT->Base($Common::global::gConfigRoot); $gCT->Warn(\&Warn); if (! $gCT->init()) { Die("Failed to open compiled config tree from " . "$Common::global::gConfigRoot/config.db: $!"); } # if they gave us no subtrees to focus on, use the root of the config tree if ($#ARGV+1 == 0) { push @ARGV, '/'; } # foreach subtree to do # find the base node of that subtree # foreach leaf node of this subtree # process it my($subtree); foreach $subtree (@ARGV) { if ($gCT->nodeExists($subtree)) { $gCT->visitLeafs($subtree, \&myHandleTarget); } else { Warn("Unknown subtree $subtree."); } } exit; sub myHandleTarget { my($name) = @_; my($tpath, $tname) = ($name =~ /^(.*)\/(.*)$/); my($target) = $gCT->configHash($name, 'target', undef, 1); print "Target dictionary for $tname\n"; my($k, $v); foreach $k (sort (keys(%{$target}))) { next if ($k eq "tname"); $v = $target->{$k}; print "\t$k = $v\n"; } print "\n"; }