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
       separated 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,
	   \%extrules])"

	   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  settings. 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
	   %targetcfg.	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
	   argument 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 allows	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
	   Expire-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
	   terminal.

       "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+14.3.quarterly>

home | help