Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
doc::mrtglib(3) 		      mrtg			 doc::mrtglib(3)

NAME
     MRTG_lib.pm - Library for MRTG and support scripts

SYNOPSIS
      use MRTG_lib;
      my ($configfile, @target_names, %globalcfg, %targetcfg);
      readcfg($configfile, \@target_names, \%globalcfg, \%targetcfg);
      my (@parsed_targets);
      cfgcheck(\@target_names, \%globalcfg, \%targetcfg, \@parsed_targets);

DESCRIPTION
     MRTG_lib  is  part  of MRTG, the Multi Router Traffic Grapher. It was sepa-
     rated from MRTG to allow other programs  to  easily  use  the  same  config
     files.  The  main part of MRTG_lib is the config file parser but some other
     functions are there too.

     $MRTG_lib::OS
	 Type of OS: WIN, UNIX, VMS

     $MRTG_lib::SL
	 Slash in the current OS.

     $MRTG_lib::PS
	 Path separator in PATH variable

     "readcfg"
	 "readcfg($file, \@targets, \%globalcfg, \%targetcfg [,  $prefix,  \%ex-
	 trules])"

	 Reads	a  config  file, parses it and fills some arrays and hashes. The
	 mandatory arguments are: the name of the config file, a ref to an array
	 which will be filled with a list of the target names, a hashref for the
	 global configuration, a hashref for the target configuration.

	 The configuration file syntax is:

	  globaloption: value
	  targetoption[targetname]: value
	  aprefix*extglobal: value
	  aprefix*exttarget[target2]: value

	 E.g.

	  workdir: /var/stat/mrtg
	  target[router1]: 2:public@router1.local.net
	  14all*columns: 2

	 The global config hash has the structure

	  $globalcfg{configoption} = 'value'

	 The target config hash has the structure

	  $targetcfg{configoption}{targetname} = 'value'

	 See mrtg-reference for more information about	the  MRTG  configuration
	 syntax.

	 "readcfg"  can  take two additional arguments to extend the config file
	 syntax. This allows programs to put their configuration into  the  mrtg
	 config  file.	The  fifth  argument is the prefix of the extension, the
	 sixth argument is a hash with the checkrules for these  extension  set-
	 tings.  E.g. if the prefix is "14all" "readcfg" will check config lines
	 that begin with "14all*", i.e. all lines like

	  14all*columns: 2
	  14all*graphsize[target3]: 500 200

	 against the rules in %extrules. The format of this hash is:

	  $extrules{option} = [sub{$_[0] =~ m/^\d+$/}, sub{"Error message for $_[0]"}]
	      i.e.
	  $extrules{option}[0] -> a test expression
	  $extrules{option}[1] -> error message if test fails

	 The first part of the array is a perl expression to test the  value  of
	 the  option. The test can access this value in the variable "$arg". The
	 second part of the array is an error message to display when  the  test
	 fails. The failed value can be integrated by using the variable "$arg".

	 Config  settings  with  an  different	prefix than the one given in the
	 "readcfg" call are not checked but inserted into %globalcfg  and  %tar-
	 getcfg.  Prefixed settings keep their prefix in the config hashes:

	  $targetcfg{'14all*graphsize'}{'target3'} = '500 200'

     "cfgcheck"
	 "cfgcheck(\@target_names, \%globalcfg, \%targetcfg, \@parsed_targets)"

	 Checks  the  configuration  read by "readcfg". Checks the values in the
	 config for syntactical and/or semantical errors. Sets defaults for some
	 options.   Parses  the  "target[...]"	options  and  files  the   array
	 @parsed_targets ready for mrtg functions.

	 The first three arguments are the same as for "readcfg". The fourth ar-
	 gument is an arrayref which will be filled with the parsed target defs.

	 "cfgcheck" converts the values of target settings options, e.g.

	  options[router1]: bits, growright

	 to a hash:

	  $targetcfg{'option'}{'bits'}{'router1'} = 1
	  $targetcfg{'option'}{'growright'}{'router1'} = 1

	 This  is  not done by "readcfg" so if you don't use "cfgcheck" you have
	 to check the scalar variable $targetcfg{'option'}{'router1'} (MRTG  al-
	 lows options to be separated by space or ',').

     "ensureSL"
	 "ensureSL(\$pathname)"

	 Checks  that  the  pathname does not contain double path separators and
	 ends with a path separator. It uses  $MRTG_lib::SL  as  path  separator
	 which will be / or \ depending on the OS.

     "log2rrd"
	 "log2rrd ($router,\%globalcfg,\%targetcfg)"

	 Convert log file to rrd format. Needs rrdtool.

     "datestr"
	 "datestr(time)"

	 Returns  the  time  given  in	the  argument as a nicely formatted date
	 string.  The argument has to be in  UNIX  time  format  (seconds  since
	 1970-1-1).

     "timestamp"
	 "timestamp()"

	 Return a string representing the current time.

     "setup_loghandlers"
	 "setup_loghandlers(filename)"

	 Install  signalhandlers  for  __DIE__ and __WARN__ making the errors go
	 the the specified destination. If filename is 'eventlog' mrtg will  log
	 to the windows event logger.

     "expistr"
	 "expistr(time)"

	 Returns  the time given in the argument formatted suitable for HTTP Ex-
	 pire-Headers.

     "create_pid"
	 "create_pid()"

	 Creates a pid file for the mrtg daemon

     "demonize_me"
	 "demonize_me()"

	 Puts the running program into background, detaching it from the  termi-
	 nal.

     "populatecache"
	 "populatecache(\%confcache, $host, $reread, $snmpoptshash)"

	 Reads the SNMP variables ifDescr, ipAdEntIfIndex, ifPhysAddress, ifName
	 from the host and stores the values in %confcache as follows:

	  $confcache{$host}{'Descr'}{ifDescr}{oid} = (ifDescr or 'Dup')
	  $confcache{$host}{'IP'}{ipAdEntIfIndex}{oid} = (ipAdEntIfIndex or 'Dup')
	  $confcache{$host}{'Eth'}{ifPhysAddress}{oid} = (ifPhysAddress or 'Dup')
	  $confcache{$host}{'Name'}{ifName}{oid} = (ifName or 'Dup')
	  $confcache{$host}{'Type'}{ifType}{oid} = (ifType or 'Dup')

	 The  value  (at  the right side of =) is 'Dup' if a value was retrieved
	 multiple times, the retrieved value else.

     "readconfcache"
	 "my $confcache = readconfcache($file)"

	 Preload the confcache from a file.

     "readfromconfcache"
	 "writeconfcache($confcache,$file)"

	 Store the current confcache into a file.

     "writeconfcache"
	 "writeconfcache($confcache,$file)"

	 Store the current confcache into a file.

     "storeincache"
	 "storeincache($confcache,$host,$method,$key,$value)"

     "readfromcache"
	 "readfromcache($confcache,$host,$method,$key)"

     "clearfromcache"
	 "clearfromcache($confcache,$host)"

     "debug"
	 "debug($type, $message)"

	 Prints the message on STDERR if debugging is enabled for type type.   A
	 debug type is enabled if type is in array @main::DEBUG.

AUTHORS
     Rainer Bawidamann <Rainer.Bawidamann@rz.uni-ulm.de>

     (This Manpage)

2.17.10 			   2022-01-19			 doc::mrtglib(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mrtglib&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help