MIB2C.CONF(5) Net-SNMP MIB2C.CONF(5) NAME mib2c.conf - How to write mib2c.conf files to do ANYTHING based on MIB input. SYNOPSIS % cat > mib2c.test.conf << EOF @foreach $t table@ Starting table $t @foreach $c column@ echo $t has column $c which has a syntax of $c.syntax @end@ @end@ EOF % mib2c -c mib2c.test.conf internet DESCRIPTION The mib2c.conf script language is a MIB-particular language designed to easily process MIB nodes in ways that you want. mib2c is a misnomer (for historical purposes), because you can produce anything (not just C code). Look in the Net-SNMP "local" directory for a bunch of example mib2c.*.conf files and behold the power before you. COMMANDS All commands within mib2c.conf files are embraced by @ signs. Anything with an @ sign at the front and back of the line is generally supposed to be a mib2c specific command. These are detailed here: @open FILE@ writes generated output to FILE note that for file specifica- tions, opening '-' will print to stdout. @append FILE@ appends the given FILE @close FILE@ closes the given FILE @push@ save the current outputs, then clear outputs. Use with @open@ and @pop@ to write to a new file without interfering with cur- rent outputs. @pop@ pop up the process() stack one level. Use after a @push@ to re- turn to the previous set of open files. @foreach $VAR scalar@ repeat iterate over code until @end@ setting $VAR to all known scalars @foreach $VAR table@ repeat iterate over code until @end@ setting $VAR to all known tables @foreach $VAR column@ repeat iterate over code until @end@ setting $VAR to all known columns within a given table. Obviously this must be called within a foreach-table clause. @foreach $VAR nonindex@ repeat iterate over code until @end@ setting $VAR to all known non-index columns within a given table. Obviously this must be called within a foreach-table clause. @foreach $VAR internalindex@ repeat iterate over code until @end@ setting $VAR to all known internal index columns within a given table. Obviously this must be called within a foreach-table clause. @foreach $VAR externalindex@ repeat iterate over code until @end@ setting $VAR to all known external index columns within a given table. Obviously this must be called within a foreach-table clause. @foreach $VAR index@ repeat iterate over code until @end@ setting $VAR to all known indexes within a given table. Obviously this must be called within a foreach-table clause. @foreach $VAR notifications@ repeat iterate over code until @end@ setting $VAR to all known notifications @foreach $VAR varbinds@ repeat iterate over code until @end@ setting $VAR to all known varbinds Obviously this must be called within a foreach-notifi- cations clause. @foreach $LABEL, $VALUE enum@ repeat iterate over code until @end@ setting $LABEL and $VALUE to the label and values from the enum list. @foreach $RANGE_START, $RANGE_END range NODE@ repeat iterate over code until @end@ setting $RANGE_START and $RANGE_END to the legal accepted range set for a given mib NODE. @foreach $var stuff a b c d@ repeat iterate over values a, b, c, d as assigned generically (ie, the values are taken straight from the list with no mib-ex- pansion, etc). @while expression@ repeat iterate over code until the expression is false @eval $VAR = expression@ evaluates expression and assigns the results to $VAR. This is not a full perl eval, but sort of a ""psuedo"" eval useful for simple expressions while keeping the same variable name space. See below for a full-blown export to perl. @perleval STUFF@ evaluates STUFF directly in perl. Note that all mib2c variables interpereted within .conf files are in $vars{NAME} and that a warning will be printed if STUFF does not return 0. (adding a 'return 0;' at the end of STUFF is a workaround. @startperl@ @endperl@ treats everything between these tags as perl code, and evaluates it. @next@ restart foreach; should only be used inside a conditional. skips out of current conditional, then continues to skip to end for the current foreach clause. @if expression@ evaluates expression, and if expression is true processes con- tained part until appropriate @end@ is reached. If the expres- sion is false, the next @elsif expression@ expression (if it ex- ists) will be evaluated, until an expression is true. If no such expression exists and an @else@ clause is found, it will be evaluated. @ifconf file@ If the specified file can be found in the conf file search path, and if found processes contained part until an appropriate @end@ is found. As with a regular @if expression@, @elsif expression@ and @else@ can be used. @ifdir dir@ If the specified directory exists, process contained part until an appropriate @end@ is found. As with a regular @if expres- sion@, @elsif expression@ and @else@ can be used. @define NAME@ @enddefine@ Memorizes ""stuff"" between the define and enddefine tags for later calling as NAME by @calldefine NAME@. @calldefine NAME@ Executes stuff previously memorized as NAME. @printf "expression" stuff1, stuff2, ...@ Like all the other printf's you know and love. @run FILE@ Sources the contents of FILE as a mib2c file, but does not af- fect current files opened. @include FILE@ Sources the contents of FILE as a mib2c file and appends its output to the current output. @prompt $var QUESTION@ Presents the user with QUESTION, expects a response and puts it in $var @print STUFF@ Prints stuff directly to the users screen (ie, not to where nor- mal mib2c output goes) @quit@ Bail out (silently) @exit@ Bail out! VARIABLES Variables in the mib2c language look very similar to perl variables, in that they start with a "$". They can be used for anything you want, but most typically they'll hold mib node names being processed by @foreach ...@ clauses. They also have a special properties when they are a mib node, such that adding special suffixes to them will allow them to be interpreted in some fashion. The easiest way to understand this is through an exam- ple. If the variable 'x' contained the word 'ifType' then some magical things happen. In mib2c output, anytime $x is seen it is replaced with "ifType". Additional suffixes can be used to get other aspects of that mib node though. If $x.objectID is seen, it'll be replaced by the OID for ifType: ".1.3.6.1.2.1.2.2.1.3". Other suffixes that can appear af- ter a dot are listed below. One last thing: you can use things like $vartext immediately ending in some other text, you can use {}s to get proper expansion of only part of the mib2c input. IE, $xtext will produce "$xtext", but ${x}text will produce "ifTypetext" instead. $var.uc all upper case version of $var $var.objectID dotted, fully-qualified, and numeric OID $var.commaoid comma separated numeric OID for array initialization $var.oidlength length of the oid $var.subid last number component of oid $var.module MIB name that the object comes from $var.parent contains the label of the parent node of $var. $var.isscalar returns 1 if var contains the name of a scalar $var.iscolumn returns 1 if var contains the name of a column $var.children returns 1 if var has children $var.perltype node's perl SYNTAX ($SNMP::MIB{node}{'syntax'}) $var.type node's ASN_XXX type (Net-SNMP specific #define) $var.decl C data type (char, u_long, ...) $var.readable 1 if an object is readable, 0 if not $var.settable 1 if an object is writable, 0 if not $var.creatable 1 if a column object can be created as part of a new row, 0 if not $var.noaccess 1 if not-accessible, 0 if not $var.accessible 1 if accessible, 0 if not $var.storagetype 1 if an object is a StorageType object, 0 if not $var.rowstatus 1 if an object is a RowStatus object, 0 if not 'settable', 'cre- atable', 'lastchange', 'storagetype' and 'rowstatus' can also be used with table variables to indicate whether it contains writable, creatable, LastChange, StorageType or RowStatus column objects $var.hasdefval returns 1 if var has a DEFVAL clause $var.defval node's DEFVAL $var.hashint returns 1 if var has a HINT clause $var.hint node's HINT $var.ranges returns 1 if var has a value range defined $var.enums returns 1 if var has enums defined for it. $var.access node's access type $var.status node's status $var.syntax node's syntax $var.reference node's reference $var.description node's description SEE ALSO mib2c(1) VVERSIONINFO 28 Apr 2004 MIB2C.CONF(5)
Generated by dwww version 1.14 on Fri Jan 24 06:13:18 CET 2025.