[mrtg] Re: cfgmaker question

kelsey hudson khudson at tsss.org
Wed Feb 15 17:45:55 MET 2006


Shane Presley wrote:
> cfgmaker --output=/etc/mrtg/cisco.inc --community=mystring  --global
> "options[_]: bits" --global "WorkDir: /var/www/html/mrtg-data/"
> --ifdesc=alias --host-template=cisco.template
> myserver.domain.dom:::::2 myserver2.domain.dom:::::2

> However, I need to use lots of different cfgmaker scripts, since I
> need to define different options for certain switches.  For example on
> some I want to use a certain template, and some I might use a
> different ifdesc.

That's fine. You can do things like this:

cfgmaker --community=mystring --global "blah" --ifdesc=alias \
          --host-template=some-template.tpl switch1.some.com:::::2 \
          --ifdesc=descr --host-template=new-template.tpl \
          switch2.some.com [...] >>/etc/mrtg/cisco.inc

Or, of course, you can put these on different lines in a script file, 
then have the output append to a single config file. If this is 
something you generate, say, every night, you could do something like 
this and put it in a cron job:


#!/bin/zsh
GLOBALS=("--global" "options[_]: bits" "--global" "WorkDir: /path")

typeset -A TEMPLATES
typeset -A IFREFS

TARGETS=("switch1.dom.com" \
          "switch2.dom.com" \
          "switch3.dom.com")

TEMPLATES=(${TARGETS[1]} "switch1-template.tpl" \
            ${TARGETS[3]} "switch3-template.tpl")

IFREFS=(${TARGETS[2]} "alias" \
         ${TARGETS[3]} "name")

rm -f /etc/mrtg/cisco.inc

for target in "${TARGETS[@]}" ; do
    template="--host-template="
    ifdesc="--ifdesc="

    cfgmaker ${GLOBALS[@]} ${ifdesc}${IFDESCS[$target]:-descr} \
       ${template}${TEMPLATES[$target]:-default-template.tpl}
       ${community}@${target} >>/etc/mrtg/cisco.inc
done

#EOF


TARGETS   is a list of routers, switches, etc.
TEMPLATES is an associative array of the name of a certain router/switch 
  (must match the name in TARGETS above or be specified with the list 
subscript of TARGETS itself) specifying which template to run for which 
target.
IFREFS is much like TEMPLATES except it deals with the --ifref= statement.
Entries in both TEMPLATES and IFREFS are optional -- it will be replaced 
by a default value (default-template.tpl or descr, respectively) if none 
exists in the hash map. All of the targets are output to the same file 
/etc/mrtg/cisco.inc.

Note that I just blindly hacked this out and haven't tested it, so YMMV.

> So using multiple cfgmaker scripts is great, but each one needs to
> output to a different file.  So that makes things a pain for me.  Is
> it possible to have these append to a single output file?  Or
> specificy different options (like ifdesc and host-template) per
> target?


good luck,
-kelsey

--
Unsubscribe mailto:mrtg-request at list.ee.ethz.ch?subject=unsubscribe
Archive     http://lists.ee.ethz.ch/mrtg
FAQ         http://faq.mrtg.org    Homepage     http://www.mrtg.org
WebAdmin    http://lists.ee.ethz.ch/lsg2.cgi



More information about the mrtg mailing list