mrtglib.1
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:12k
源码类别:

SNMP编程

开发平台:

C/C++

  1. ." Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
  2. ."
  3. ." Standard preamble:
  4. ." ========================================================================
  5. .de Sh " Subsection heading
  6. .br
  7. .if t .Sp
  8. .ne 5
  9. .PP
  10. fB\$1fR
  11. .PP
  12. ..
  13. .de Sp " Vertical space (when we can't use .PP)
  14. .if t .sp .5v
  15. .if n .sp
  16. ..
  17. .de Vb " Begin verbatim text
  18. .ft CW
  19. .nf
  20. .ne \$1
  21. ..
  22. .de Ve " End verbatim text
  23. .ft R
  24. .fi
  25. ..
  26. ." Set up some character translations and predefined strings.  *(-- will
  27. ." give an unbreakable dash, *(PI will give pi, *(L" will give a left
  28. ." double quote, and *(R" will give a right double quote.  | will give a
  29. ." real vertical bar.  *(C+ will give a nicer C++.  Capital omega is used to
  30. ." do unbreakable dashes and therefore won't be available.  *(C` and *(C'
  31. ." expand to `' in nroff, nothing in troff, for use with C<>.
  32. .tr (*W-|(bv*(Tr
  33. .ds C+ Cv'-.1v'h'-1p's-2+h'-1p'+s0v'.1v'h'-1p'
  34. .ie n {
  35. .    ds -- (*W-
  36. .    ds PI pi
  37. .    if (n(.H=4u)&(1m=24u) .ds -- (*Wh'-12u'(*Wh'-12u'-" diablo 10 pitch
  38. .    if (n(.H=4u)&(1m=20u) .ds -- (*Wh'-12u'(*Wh'-8u'-"  diablo 12 pitch
  39. .    ds L" ""
  40. .    ds R" ""
  41. .    ds C` ""
  42. .    ds C' ""
  43. 'br}
  44. .el{
  45. .    ds -- |(em|
  46. .    ds PI (*p
  47. .    ds L" ``
  48. .    ds R" ''
  49. 'br}
  50. ."
  51. ." If the F register is turned on, we'll generate index entries on stderr for
  52. ." titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  53. ." entries marked with X<> in POD.  Of course, you'll have to process the
  54. ." output yourself in some meaningful fashion.
  55. .if nF {
  56. .    de IX
  57. .    tm Index:\$1t\n%t"\$2"
  58. ..
  59. .    nr % 0
  60. .    rr F
  61. .}
  62. ."
  63. ." For nroff, turn off justification.  Always turn off hyphenation; it makes
  64. ." way too many mistakes in technical documents.
  65. .hy 0
  66. .if n .na
  67. ."
  68. ." Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  69. ." Fear.  Run.  Save yourself.  No user-serviceable parts.
  70. .    " fudge factors for nroff and troff
  71. .if n {
  72. .    ds #H 0
  73. .    ds #V .8m
  74. .    ds #F .3m
  75. .    ds #[ f1
  76. .    ds #] fP
  77. .}
  78. .if t {
  79. .    ds #H ((1u-(\\n(.fu%2u))*.13m)
  80. .    ds #V .6m
  81. .    ds #F 0
  82. .    ds #[ &
  83. .    ds #] &
  84. .}
  85. .    " simple accents for nroff and troff
  86. .if n {
  87. .    ds ' &
  88. .    ds ` &
  89. .    ds ^ &
  90. .    ds , &
  91. .    ds ~ ~
  92. .    ds /
  93. .}
  94. .if t {
  95. .    ds ' \k:h'-(\n(.wu*8/10-*(#H)''h"|\n:u"
  96. .    ds ` \k:h'-(\n(.wu*8/10-*(#H)'`h'|\n:u'
  97. .    ds ^ \k:h'-(\n(.wu*10/11-*(#H)'^h'|\n:u'
  98. .    ds , \k:h'-(\n(.wu*8/10)',h'|\n:u'
  99. .    ds ~ \k:h'-(\n(.wu-*(#H-.1m)'~h'|\n:u'
  100. .    ds / \k:h'-(\n(.wu*8/10-*(#H)'z(slh'|\n:u'
  101. .}
  102. .    " troff and (daisy-wheel) nroff accents
  103. .ds : \k:h'-(\n(.wu*8/10-*(#H+.1m+*(#F)'v'-*(#V'z.h'.2m+*(#F'.h'|\n:u'v'*(#V'
  104. .ds 8 h'*(#H'(*bh'-*(#H'
  105. .ds o \k:h'-(\n(.wu+w'(de'u-*(#H)/2u'v'-.3n'*(#[z(dev'.3n'h'|\n:u'*(#]
  106. .ds d- h'*(#H'(pdh'-w'~'u'v'-.25m'f2(hyfPv'.25m'h'-*(#H'
  107. .ds D- D\k:h'-w'D'u'v'-.11m'z(hyv'.11m'h'|\n:u'
  108. .ds th *(#[v'.3m's+1Is-1v'-.3m'h'-(w'I'u*2/3)'s-1os+1*(#]
  109. .ds Th *(#[s+2Is-2h'-w'I'u*3/5'v'-.3m'ov'.3m'*(#]
  110. .ds ae ah'-(w'a'u*4/10)'e
  111. .ds Ae Ah'-(w'A'u*4/10)'E
  112. .    " corrections for vroff
  113. .if v .ds ~ \k:h'-(\n(.wu*9/10-*(#H)'s-2u~ds+2h'|\n:u'
  114. .if v .ds ^ \k:h'-(\n(.wu*10/11-*(#H)'v'-.4m'^v'.4m'h'|\n:u'
  115. .    " for low resolution devices (crt and lpr)
  116. .if n(.H>23 .if n(.V>19 
  117. {
  118. .    ds : e
  119. .    ds 8 ss
  120. .    ds o a
  121. .    ds d- dh'-1'(ga
  122. .    ds D- Dh'-1'(hy
  123. .    ds th o'bp'
  124. .    ds Th o'LP'
  125. .    ds ae ae
  126. .    ds Ae AE
  127. .}
  128. .rm #[ #] #H #V #F C
  129. ." ========================================================================
  130. ."
  131. .IX Title "MRTGLIB 1"
  132. .TH MRTGLIB 1 "2006-02-03" "2.13.2" "mrtg"
  133. .SH "NAME"
  134. MRTG_lib.pm - Library for MRTG and support scripts
  135. .SH "SYNOPSIS"
  136. .IX Header "SYNOPSIS"
  137. .Vb 5
  138. & use MRTG_lib;
  139. & my ($configfile, @target_names, %globalcfg, %targetcfg);
  140. & readcfg($configfile, e@target_names, e%globalcfg, e%targetcfg);
  141. & my (@parsed_targets);
  142. & cfgcheck(e@target_names, e%globalcfg, e%targetcfg, e@parsed_targets);
  143. .Ve
  144. .SH "DESCRIPTION"
  145. .IX Header "DESCRIPTION"
  146. MRTG_lib is part of s-1MRTGs0, the Multi Router Traffic Grapher. It was separated
  147. from s-1MRTGs0 to allow other programs to easily use the same config files. The
  148. main part of MRTG_lib is the config file parser but some other funcions are
  149. there too.
  150. .ie n .IP "$MRTG_lib::OS" 4
  151. .el .IP "f(CW$MRTG_lib::OSfR" 4
  152. .IX Item "$MRTG_lib::OS"
  153. Type of s-1OS:s0 s-1WINs0, s-1UNIXs0, s-1VMSs0
  154. .ie n .IP "$MRTG_lib::SL" 4
  155. .el .IP "f(CW$MRTG_lib::SLfR" 4
  156. .IX Item "$MRTG_lib::SL"
  157. &fISlashfR in the current s-1OSs0.
  158. .ie n .IP "$MRTG_lib::PS" 4
  159. .el .IP "f(CW$MRTG_lib::PSfR" 4
  160. .IX Item "$MRTG_lib::PS"
  161. Path separator in s-1PATHs0 variable
  162. .ie n .IP """readcfg""" 4
  163. .el .IP "f(CWreadcfgfR" 4
  164. .IX Item "readcfg"
  165. &f(CW*(C`readcfg($file, e@targets, e%globalcfg, e%targetcfg [, $prefix, e%extrules])*(C'fR
  166. .Sp
  167. Reads a config file, parses it and fills some arrays and hashes. The
  168. mandatory arguments are: the name of the config file, a ref to an array which
  169. will be filled with a list of the target names, a hashref for the global
  170. configuration, a hashref for the target configuration.
  171. .Sp
  172. The configuration file syntax is:
  173. .Sp
  174. .Vb 4
  175. & globaloption: value
  176. & targetoption[targetname]: value
  177. & aprefix*extglobal: value
  178. & aprefix*exttarget[target2]: value
  179. .Ve
  180. .Sp
  181. E.g.
  182. .Sp
  183. .Vb 3
  184. & workdir: /var/stat/mrtg
  185. & target[router1]: 2:public@router1.local.net
  186. & 14all*columns: 2
  187. .Ve
  188. .Sp
  189. The global config hash has the structure
  190. .Sp
  191. .Vb 1
  192. & $globalcfg{configoption} = 'value'
  193. .Ve
  194. .Sp
  195. The target config hash has the structure
  196. .Sp
  197. .Vb 1
  198. & $targetcfg{configoption}{targetname} = 'value'
  199. .Ve
  200. .Sp
  201. See mrtg-reference for more information about the s-1MRTGs0 configuration syntax.
  202. .Sp
  203. &f(CW*(C`readcfg*(C'fR can take two additional arguments to extend the config file
  204. syntax. This allows programs to put their configuration into the mrtg config
  205. file. The fifth argument is the prefix of the extension, the sixth argument
  206. is a hash with the checkrules for these extension settings. E.g. if the
  207. prefix is *(L"14all*(R" f(CW*(C`readcfg*(C'fR will check config lines that begin with
  208. &*(L"14all**(R", i.e. all lines like
  209. .Sp
  210. .Vb 2
  211. & 14all*columns: 2
  212. & 14all*graphsize[target3]: 500 200
  213. .Ve
  214. .Sp
  215. against the rules in f(CW%extrulesfR. The format of this hash is:
  216. .Sp
  217. .Vb 4
  218. & $extrules{option} = [sub{$_[0] =~ m/^ed+$/}, sub{"Error message for $_[0]"}]
  219. &     i.e.
  220. & $extrules{option}[0] -> a test expression
  221. & $extrules{option}[1] -> error message if test fails
  222. .Ve
  223. .Sp
  224. The first part of the array is a perl expression to test the value of the
  225. option. The test can access this value in the variable *(L"$arg*(R". The second
  226. part of the array is an error message to display when the test fails. The
  227. failed value can be integrated by using the variable *(L"$arg*(R".
  228. .Sp
  229. Config settings with an different prefix than the one given in the f(CW*(C`readcfg*(C'fR
  230. call are not checked but inserted into fI%globalcfgfR and fI%targetcfgfR.
  231. Prefixed settings keep their prefix in the config hashes:
  232. .Sp
  233. .Vb 1
  234. & $targetcfg{'14all*graphsize'}{'target3'} = '500 200'
  235. .Ve
  236. .ie n .IP """cfgcheck""" 4
  237. .el .IP "f(CWcfgcheckfR" 4
  238. .IX Item "cfgcheck"
  239. &f(CW*(C`cfgcheck(e@target_names, e%globalcfg, e%targetcfg, e@parsed_targets)*(C'fR
  240. .Sp
  241. Checks the configuration read by f(CW*(C`readcfg*(C'fR. Checks the values in the config
  242. for syntactical and/or semantical errors. Sets defaults for some options.
  243. Parses the *(L"target[...]*(R" options and filles the array f(CW@parsed_targetsfR ready
  244. for mrtg functions.
  245. .Sp
  246. The first three arguments are the same as for f(CW*(C`readcfg*(C'fR. The fourth argument
  247. is an arrayref which will be filled with the parsed target defs.
  248. .Sp
  249. &f(CW*(C`cfgcheck*(C'fR converts the values of target settings fIoptionsfR, e.g.
  250. .Sp
  251. .Vb 1
  252. & options[router1]: bits, growright
  253. .Ve
  254. .Sp
  255. to a hash:
  256. .Sp
  257. .Vb 2
  258. & $targetcfg{'option'}{'bits'}{'router1'} = 1
  259. & $targetcfg{'option'}{'growright'}{'router1'} = 1
  260. .Ve
  261. .Sp
  262. This is not done by f(CW*(C`readcfg*(C'fR so if you don't use f(CW*(C`cfgcheck*(C'fR you have to
  263. check the scalar variable fI$targetcfg{'option'}{'router1'}fR (s-1MRTGs0 allows
  264. options to be separated by space or ',').
  265. .ie n .IP """ensureSL""" 4
  266. .el .IP "f(CWensureSLfR" 4
  267. .IX Item "ensureSL"
  268. &f(CW*(C`ensureSL(e$pathname)*(C'fR
  269. .Sp
  270. Checks that the fIpathnamefR does not contain double path separators and ends
  271. with a path separator. It uses f(CW$MRTG_lib::SLfR as path separator which will be /
  272. or e depending on the s-1OSs0.
  273. .ie n .IP """log2rrd""" 4
  274. .el .IP "f(CWlog2rrdfR" 4
  275. .IX Item "log2rrd"
  276. &f(CW*(C`log2rrd ($router,e%globalcfg,e%targetcfg)*(C'fR
  277. .Sp
  278. Convert log file to rrd format. Needs rrdtool.
  279. .ie n .IP """datestr""" 4
  280. .el .IP "f(CWdatestrfR" 4
  281. .IX Item "datestr"
  282. &f(CW*(C`datestr(time)*(C'fR
  283. .Sp
  284. Returns the time given in the argument as a nicely formated date string.
  285. The argument has to be in s-1UNIXs0 time format (seconds since 1970-1-1).
  286. .ie n .IP """timestamp""" 4
  287. .el .IP "f(CWtimestampfR" 4
  288. .IX Item "timestamp"
  289. &f(CW*(C`timestamp()*(C'fR
  290. .Sp
  291. Return a string representing the current time.
  292. .ie n .IP """setup_loghandlers""" 4
  293. .el .IP "f(CWsetup_loghandlersfR" 4
  294. .IX Item "setup_loghandlers"
  295. &f(CW*(C`setup_loghandlers(filename)*(C'fR
  296. .Sp
  297. Install signalhandlers for _|_DIE_|_ and _|_WARN_|_ making the errors
  298. go the the specified destination. If filename is 'eventlog'
  299. mrtg will log to the windows event logger.
  300. .ie n .IP """expistr""" 4
  301. .el .IP "f(CWexpistrfR" 4
  302. .IX Item "expistr"
  303. &f(CW*(C`expistr(time)*(C'fR
  304. .Sp
  305. Returns the time given in the argument formatted suitable for s-1HTTPs0
  306. Expire-Headers.
  307. .ie n .IP """create_pid""" 4
  308. .el .IP "f(CWcreate_pidfR" 4
  309. .IX Item "create_pid"
  310. &f(CW*(C`create_pid()*(C'fR 
  311. .Sp
  312. Creates a pid file for the mrtg daemon       
  313. .ie n .IP """demonize_me""" 4
  314. .el .IP "f(CWdemonize_mefR" 4
  315. .IX Item "demonize_me"
  316. &f(CW*(C`demonize_me()*(C'fR
  317. .Sp
  318. Puts the running program into background, detaching it from the terminal.
  319. .ie n .IP """populatecache""" 4
  320. .el .IP "f(CWpopulatecachefR" 4
  321. .IX Item "populatecache"
  322. &f(CW*(C`populatecache(e%confcache, $host, $reread, $snmpoptshash)*(C'fR
  323. .Sp
  324. Reads the s-1SNMPs0 variables fIifDescrfR, fIipAdEntIfIndexfR, fIifPhysAddressfR, fIifNamefR from
  325. the fIhostfR and stores the values in fI%confcachefR as follows:
  326. .Sp
  327. .Vb 5
  328. & $confcache{$host}{'Descr'}{ifDescr}{oid} = (ifDescr or 'Dup')
  329. & $confcache{$host}{'IP'}{ipAdEntIfIndex}{oid} = (ipAdEntIfIndex or 'Dup')
  330. & $confcache{$host}{'Eth'}{ifPhysAddress}{oid} = (ifPhysAddress or 'Dup')
  331. & $confcache{$host}{'Name'}{ifName}{oid} = (ifName or 'Dup')
  332. & $confcache{$host}{'Type'}{ifType}{oid} = (ifType or 'Dup')
  333. .Ve
  334. .Sp
  335. The value (at the right side of =) is 'Dup' if a value was retrieved
  336. muliple times, the retrieved value else.
  337. .ie n .IP """readconfcache""" 4
  338. .el .IP "f(CWreadconfcachefR" 4
  339. .IX Item "readconfcache"
  340. &f(CW*(C`my $confcache = readconfcache($file)*(C'fR
  341. .Sp
  342. Preload the confcache from a file.
  343. .ie n .IP """readfromconfcache""" 4
  344. .el .IP "f(CWreadfromconfcachefR" 4
  345. .IX Item "readfromconfcache"
  346. &f(CW*(C`writeconfcache($confcache,$file)*(C'fR
  347. .Sp
  348. Store the current confcache into a file.
  349. .ie n .IP """writeconfcache""" 4
  350. .el .IP "f(CWwriteconfcachefR" 4
  351. .IX Item "writeconfcache"
  352. &f(CW*(C`writeconfcache($confcache,$file)*(C'fR
  353. .Sp
  354. Store the current confcache into a file.
  355. .ie n .IP """storeincache""" 4
  356. .el .IP "f(CWstoreincachefR" 4
  357. .IX Item "storeincache"
  358. &f(CW*(C`storeincache($confcache,$host,$method,$key,$value)*(C'fR
  359. .ie n .IP """readfromcache""" 4
  360. .el .IP "f(CWreadfromcachefR" 4
  361. .IX Item "readfromcache"
  362. &f(CW*(C`readfromcache($confcache,$host,$method,$key)*(C'fR
  363. .ie n .IP """clearfromcache""" 4
  364. .el .IP "f(CWclearfromcachefR" 4
  365. .IX Item "clearfromcache"
  366. &f(CW*(C`clearfromcache($confcache,$host)*(C'fR
  367. .ie n .IP """debug""" 4
  368. .el .IP "f(CWdebugfR" 4
  369. .IX Item "debug"
  370. &f(CW*(C`debug($type, $message)*(C'fR
  371. .Sp
  372. Prints the fImessagefR on s-1STDERRs0 if debugging is enabled for type fItypefR.
  373. A debug type is enabled if fItypefR is in array f(CW@main::DEBUGfR.
  374. .SH "AUTHORS"
  375. .IX Header "AUTHORS"
  376. Rainer Bawidamann <Rainer.Bawidamann@rz.uni-ulm.de>
  377. .PP
  378. (This Manpage)