]>
Commit | Line | Data |
---|---|---|
669797e1 | 1 | # Man page created with: |
2 | # | |
b53ed7ea | 3 | # pod2man -s 8 -r "`./check_openmanage -V | head -n 1`" -c 'Nagios plugin' check_openmanage.pod check_openmanage.8 |
669797e1 | 4 | # |
5 | # $Id$ | |
6 | ||
7 | =head1 NAME | |
8 | ||
9 | check_openmanage - Nagios plugin for checking the hardware status on | |
10 | Dell servers running OpenManage | |
11 | ||
12 | =head1 SYNOPSIS | |
13 | ||
14 | check_openmanage [I<OPTION>]... | |
b0f29cfc | 15 | |
6a3615ec | 16 | check_openmanage -H I<hostname> [I<OPTION>]... |
669797e1 | 17 | |
18 | =head1 DESCRIPTION | |
19 | ||
20 | check_openmanage is a plugin for Nagios which checks the hardware | |
21 | health of Dell servers running OpenManage Server Administrator | |
22 | (OMSA). The plugin checks the health of the storage subsystem, power | |
23 | supplies, memory modules, temperature probes etc., and gives an alert | |
24 | if any of the components are faulty or operate outside normal | |
25 | parameters. | |
26 | ||
27 | check_openmanage is designed to be used by either locally (using NRPE | |
28 | or similar) or remotely (using SNMP). In either mode, the output is | |
29 | (nearly) the same. Note that checking the alert log is not supported | |
30 | in SNMP mode. | |
31 | ||
32 | =head1 GENERAL OPTIONS | |
33 | ||
34 | =over 4 | |
35 | ||
36 | =item -t, --timeout I<SECONDS> | |
37 | ||
38 | The number of seconds after which the plugin will abort. Default | |
39 | timeout is 30 seconds if the option is not present. | |
40 | ||
41 | =item -p, --perfdata [I<multline>] | |
42 | ||
43 | Collect performance data. Performance data collected include | |
44 | temperatures (in Celcius) and fan speeds (in rpm). On systems that | |
45 | support it, power consumption is also collected (in Watts). | |
46 | ||
47 | If given the argument C<multiline>, the plugin will output the | |
48 | performance data on multiple lines, for Nagios 3.x and above. | |
49 | ||
50 | =item -w, --warning I<STRING> or I<FILE> | |
51 | ||
52 | Override the machine-default temperature warning thresholds. Syntax is | |
53 | C<id1=max[/min],id2=max[/min],...>. The following example sets warning | |
54 | limits to max 50C for probe 0, and max 45C and min 10C for probe 1: | |
55 | ||
56 | check_openmanage -w 0=50,1=45/10 | |
57 | ||
58 | The minimum limit can be omitted, if desired. Most often, you are only | |
59 | interested in setting the maximum thresholds. | |
60 | ||
61 | This parameter can be either a string with the limits, or a file | |
62 | containing the limits string. The option can be specified multiple | |
63 | times. | |
64 | ||
b0f29cfc | 65 | NOTE: This option should only be used to narrow the field of OK |
66 | temperatures wrt. the OMSA defaults. To expand the field of OK | |
67 | temperatures, increase the OMSA thresholds. See the plugin web page | |
68 | for more information. | |
69 | ||
669797e1 | 70 | =item -c, --critical I<STRING> or I<FILE> |
71 | ||
72 | Override the machine-default temperature critical thresholds. Syntax | |
73 | and behaviour is the same as for warning thresholds described above. | |
74 | ||
75 | =item -o, --ok-info I<NUMBER> | |
76 | ||
77 | This option lets you define how much output you want the plugin to | |
78 | give when everything is OK, i.e. the verbosity level. The default | |
79 | value is 0 (one line of output). The output levels are cumulative. | |
80 | ||
81 | =over 4 | |
82 | ||
83 | =item B<0> | |
84 | ||
85 | - Only one line (default) | |
86 | ||
87 | =item B<1> | |
88 | ||
89 | - BIOS and firmware info on a separate line | |
90 | ||
91 | =item B<2> | |
92 | ||
93 | - Storage controller and enclosure info on separate lines | |
94 | ||
95 | =item B<3> | |
96 | ||
97 | - OMSA version on separate line | |
98 | ||
99 | =back | |
100 | ||
101 | The reason that OMSA version is separated from the rest is that | |
102 | finding it requires running a really slow omreport command, when the | |
103 | plugin is run locally via NRPE. | |
104 | ||
71d7d930 | 105 | =item --omreport I<OMREPORT PATH> |
106 | ||
107 | Specify full path to omreport, if it is not installed in any of the | |
108 | regular places. Usually this option is only needed on Windows, if | |
109 | omreport is not installed on the C: drive. | |
110 | ||
669797e1 | 111 | =item -i, --info |
112 | ||
113 | Prefix any alerts with the service tag. | |
114 | ||
115 | =item -e, --extinfo | |
116 | ||
117 | Display a short summary of system information (model and service tag) | |
118 | in case of an alert. | |
119 | ||
d27881e0 | 120 | =item -I, --htmlinfo [I<CODE>] |
669797e1 | 121 | |
122 | Using this option will make the servicetag and model name into | |
123 | clickable HTML links in the output. The model name link will point to | |
124 | the official Dell documentation for that model, while the servicetag | |
125 | link will point to a website containing support info for that | |
126 | particular server. | |
127 | ||
128 | This option takes an optional argument, which should be your country | |
129 | code or C<me> for the middle east. If the country code is omitted the | |
130 | servicetag link will still work, but it will not be speficic for your | |
131 | country or area. Example for Germany: | |
132 | ||
133 | check_openmanage --htmlinfo de | |
134 | ||
135 | If this option is used together with either the I<--extinfo> or | |
136 | I<--info> options, it is particularly useful. Only the most common | |
137 | country codes is supported at this time. | |
138 | ||
139 | =item --postmsg I<STRING> or I<FILE> | |
140 | ||
141 | User specified post message. Useful for displaying arbitrary or | |
142 | various system information at the end of alerts. The argument is | |
143 | either a string with the message, or a file containing that | |
144 | string. You can control the format with the following interpreted | |
145 | sequences: | |
146 | ||
147 | =over 4 | |
148 | ||
149 | =item B<%m> | |
150 | ||
151 | System model | |
152 | ||
153 | =item B<%s> | |
154 | ||
155 | Service tag | |
156 | ||
157 | =item B<%b> | |
158 | ||
159 | BIOS version | |
160 | ||
161 | =item B<%d> | |
162 | ||
163 | BIOS release date | |
164 | ||
165 | =item B<%o> | |
166 | ||
167 | Operating system name | |
168 | ||
169 | =item B<%r> | |
170 | ||
171 | Operating system release | |
172 | ||
173 | =item B<%p> | |
174 | ||
175 | Number of physical drives | |
176 | ||
177 | =item B<%l> | |
178 | ||
179 | Number of logical drives | |
180 | ||
181 | =item B<%n> | |
182 | ||
183 | Line break. Will be a regular line break if run from a TTY, else an | |
184 | HTML line break. | |
185 | ||
186 | =item B<%%> | |
187 | ||
188 | A literal C<%> | |
189 | ||
190 | =back | |
191 | ||
192 | =item -s, --state | |
193 | ||
194 | Prefix each alert with its corresponding service state (i.e. warning, | |
195 | critical etc.). This is useful in case of several alerts from the same | |
196 | monitored system. | |
197 | ||
d27881e0 | 198 | =item -S, --short-state |
669797e1 | 199 | |
200 | Same as the B<--state> option above, except that the state is | |
201 | abbreviated to a single letter (W=warning, C=critical etc.). | |
202 | ||
fb90e271 | 203 | =item --linebreak I<STRING> |
669797e1 | 204 | |
205 | check_openmanage will sometimes report more than one line, e.g. if | |
206 | there are several alerts. If the script has a TTY, it will use regular | |
207 | linebreaks. If not (which is the case with NRPE) it will use HTML | |
208 | linebreaks. Sometimes it can be useful to control what the plugin uses | |
209 | as a line separator, and this option provides that control. | |
210 | ||
211 | The argument is the exact string to be used as the line | |
212 | separator. There are two exceptions, i.e. two keywords that translates | |
213 | to the following: | |
214 | ||
215 | =over 4 | |
216 | ||
217 | =item B<REG> | |
218 | ||
219 | Regular linebreaks, i.e. "\n". | |
220 | ||
221 | =item B<HTML> | |
222 | ||
223 | HTML linebreaks, i.e. "<br/>". | |
224 | ||
225 | =back | |
226 | ||
227 | This is a rather special option that is normally not needed. The | |
228 | default behaviour should be sufficient for most users. | |
229 | ||
230 | =item -d, --debug | |
231 | ||
232 | Debug output. Will report status on everything, even if status is | |
233 | ok. Blacklisted or unchecked components are ignored (i.e. no output). | |
234 | ||
235 | NOTE: This option is intended for diagnostics and debugging purposes | |
236 | only. Do not use this option from within Nagios, i.e. in the Nagios | |
237 | config. | |
238 | ||
239 | =item -h, --help | |
240 | ||
241 | Display help text. | |
242 | ||
243 | =item -V, --version | |
244 | ||
245 | Display version info. | |
246 | ||
247 | =back | |
248 | ||
249 | =head1 SNMP OPTIONS | |
250 | ||
251 | =over 4 | |
252 | ||
253 | =item -H, --hostname I<HOSTNAME> | |
254 | ||
255 | The transport address of the destination SNMP device. Using this | |
256 | option triggers SNMP mode. | |
257 | ||
258 | =item -P, --protocol I<PROTOCOL> | |
259 | ||
260 | SNMP protocol version. This option is optional and expects a digit | |
261 | (i.e. C<1>, C<2> or C<3>) to define the SNMP version. The default is | |
262 | C<2>, i.e. SNMP version 2c. | |
263 | ||
264 | =item -C, --community I<COMMUNITY> | |
265 | ||
266 | This option expects a string that is to be used as the SNMP community | |
267 | name when using SNMP version 1 or 2c. By default the community name | |
268 | is set to C<public> if the option is not present. | |
269 | ||
270 | =item --port I<PORT> | |
271 | ||
272 | SNMP port of the remote (monitored) system. Defaults to the well-known | |
273 | SNMP port 161. | |
274 | ||
275 | =item -U, --username I<SECURITYNAME> | |
276 | ||
277 | [SNMPv3] The User-based Security Model (USM) used by SNMPv3 requires | |
278 | that a securityName be specified. This option is required when using | |
279 | SNMP version 3, and expects a string 1 to 32 octets in lenght. | |
280 | ||
281 | =item --authpassword I<PASSWORD>, --authkey I<KEY> | |
282 | ||
283 | [SNMPv3] By default a securityLevel of C<noAuthNoPriv> is assumed. If | |
284 | the --authpassword option is specified, the securityLevel becomes | |
285 | C<authNoPriv>. The --authpassword option expects a string which is at | |
286 | least 1 octet in length as argument. | |
287 | ||
288 | Optionally, instead of the --authpassword option, the --authkey option | |
289 | can be used so that a plain text password does not have to be | |
290 | specified in a script. The --authkey option expects a hexadecimal | |
291 | string produced by localizing the password with the | |
292 | authoritativeEngineID for the specific destination device. The | |
293 | C<snmpkey> utility included with the Net::SNMP distribution can be | |
294 | used to create the hexadecimal string (see L<snmpkey>). | |
295 | ||
296 | =item --authprotocol I<ALGORITHM> | |
297 | ||
298 | [SNMPv3] Two different hash algorithms are defined by SNMPv3 which can | |
299 | be used by the Security Model for authentication. These algorithms are | |
300 | HMAC-MD5-96 C<MD5> (RFC 1321) and HMAC-SHA-96 C<SHA-1> (NIST FIPS PUB | |
301 | 180-1). The default algorithm used by the plugin is HMAC-MD5-96. This | |
302 | behavior can be changed by using this option. The option expects | |
303 | either the string C<md5> or C<sha> to be passed as argument to modify | |
304 | the hash algorithm. | |
305 | ||
306 | =item --privpassword I<PASSWORD>, --privkey I<KEY> | |
307 | ||
308 | [SNMPv3] By specifying the options --privkey or --privpassword, the | |
309 | securityLevel associated with the object becomes | |
310 | C<authPriv>. According to SNMPv3, privacy requires the use of | |
311 | authentication. Therefore, if either of these two options are present | |
312 | and the --authkey or --authpassword arguments are missing, the | |
313 | creation of the object fails. The --privkey and --privpassword | |
314 | options expect the same input as the --authkey and --authpassword | |
315 | options respectively. | |
316 | ||
317 | =item --privprotocol I<ALGORITHM> | |
318 | ||
319 | [SNMPv3] The User-based Security Model described in RFC 3414 defines a | |
320 | single encryption protocol to be used for privacy. This protocol, | |
321 | CBC-DES C<DES> (NIST FIPS PUB 46-1), is used by default or if the | |
322 | string C<des> is passed to the --privprotocol option. The Net::SNMP | |
323 | module also supports RFC 3826 which describes the use of | |
324 | CFB128-AES-128 C<AES> (NIST FIPS PUB 197) in the USM. The AES | |
325 | encryption protocol can be selected by passing C<aes> or C<aes128> to | |
326 | the --privprotocol option. | |
327 | ||
328 | One of the following arguments are required: des, aes, aes128, 3des, | |
329 | 3desde | |
330 | ||
606e084f | 331 | =item --use-get_table |
332 | ||
333 | This option exists as a workaround when using check_openmanage with | |
334 | SNMPv3 on Windows with net-snmp. Using this option will make | |
335 | check_openmanage use the Net::SNMP function get_table() instead of | |
336 | get_entries() while fetching values via SNMP. The latter is faster and | |
337 | is the default. | |
338 | ||
669797e1 | 339 | =back |
340 | ||
341 | =head1 BLACKLISTING | |
342 | ||
343 | =over 4 | |
344 | ||
345 | =item -b, --blacklist I<STRING> or I<FILE> | |
346 | ||
347 | Blacklist missing and/or failed components, if you do not plan to fix | |
348 | them. The parameter is either the blacklist string, or a file (that | |
349 | may or may not exist) containing the string. The blacklist string | |
350 | contains component names with component IDs separated by slash | |
351 | (/). Blacklisted components are left unchecked. | |
352 | ||
353 | TIP: Use the option C<-d> (or C<--debug>) to get the blacklist ID for | |
354 | devices. The ID is listed in a separate column in the debug output. | |
355 | ||
0b6ba9c9 | 356 | NOTE: If blacklisting is in effect, the global health of the system is |
357 | not checked. | |
669797e1 | 358 | |
359 | =over 9 | |
360 | ||
361 | =item B<Syntax:> | |
362 | ||
363 | component1=id1[,id2,...]/component2=id1[,id2,...]/... | |
364 | ||
02bf599a | 365 | The ID part can also be C<all>, in which all components of that type |
0b6ba9c9 | 366 | is blacklisted. |
367 | ||
669797e1 | 368 | =item B<Example:> |
369 | ||
02bf599a | 370 | check_openmanage -b ps=0/fan=3,5/pdisk=1:0:0:1/ctrl_driver=all |
669797e1 | 371 | |
372 | =back | |
373 | ||
0b6ba9c9 | 374 | In the example we blacklist powersupply 0, fans 3 and 5, physical disk |
375 | 1:0:0:1, and warnings about out-of-date drivers for all | |
376 | controllers. Legal component names include: | |
669797e1 | 377 | |
378 | =over 8 | |
379 | ||
380 | =item B<ctrl> | |
381 | ||
0b6ba9c9 | 382 | Storage controller. Note that if a controller is blacklisted, all |
383 | components on that controller (such as physical and logical drives) | |
384 | are blacklisted as well. | |
669797e1 | 385 | |
386 | =item B<ctrl_fw> | |
387 | ||
388 | Suppress the special warning message about old controller | |
389 | firmware. Use this if you can not or will not upgrade the firmware. | |
390 | ||
391 | =item B<ctrl_driver> | |
392 | ||
393 | Suppress the special warning message about old controller driver. | |
394 | Particularly useful on systems where you can not upgrade the driver. | |
395 | ||
8dd8083c | 396 | =item B<ctrl_stdr> |
397 | ||
398 | Suppress the special warning message about old Storport driver on | |
399 | Windows. | |
400 | ||
d27881e0 | 401 | =item B<ctrl_pdisk> |
402 | ||
403 | This blacklisting keyword exists as a possible workaround for physical | |
404 | drives with bad firmware which makes Openmanage choke. It takes the | |
405 | controller number as argument. Use this option to blacklist all | |
406 | physical drives on a specific controller. This blacklisting keyword is | |
407 | only available in local mode, i.e. not with SNMP. | |
408 | ||
669797e1 | 409 | =item B<pdisk> |
410 | ||
411 | Physical disk. | |
412 | ||
413 | =item B<vdisk> | |
414 | ||
415 | Logical drive (virtual disk) | |
416 | ||
417 | =item B<bat> | |
418 | ||
419 | Controller cache battery | |
420 | ||
7b02bc55 | 421 | =item B<bat_charge> |
422 | ||
423 | Ignore warnings related to the controller cache battery charging | |
7031b02a | 424 | cycle, which happens approximately every 40 days on Dell servers. Note |
425 | that using this blacklist keyword makes check_openmanage ignore | |
426 | non-critical cache battery errors. | |
7b02bc55 | 427 | |
669797e1 | 428 | =item B<conn> |
429 | ||
430 | Connector (channel) | |
431 | ||
432 | =item B<encl> | |
433 | ||
434 | Enclosure | |
435 | ||
436 | =item B<encl_fan> | |
437 | ||
438 | Enclosure fan | |
439 | ||
440 | =item B<encl_ps> | |
441 | ||
442 | Enclosure power supply | |
443 | ||
444 | =item B<encl_temp> | |
445 | ||
446 | Enclosure temperature probe | |
447 | ||
448 | =item B<encl_emm> | |
449 | ||
450 | Enclosure management module (EMM) | |
451 | ||
452 | =item B<dimm> | |
453 | ||
454 | Memory module | |
455 | ||
456 | =item B<fan> | |
457 | ||
458 | Fan | |
459 | ||
460 | =item B<ps> | |
461 | ||
462 | Powersupply | |
463 | ||
464 | =item B<temp> | |
465 | ||
466 | Temperature sensor | |
467 | ||
468 | =item B<cpu> | |
469 | ||
470 | Processor (CPU) | |
471 | ||
472 | =item B<volt> | |
473 | ||
474 | Voltage probe | |
475 | ||
476 | =item B<bp> | |
477 | ||
478 | System battery | |
479 | ||
600bd61b | 480 | =item B<amp> |
669797e1 | 481 | |
482 | Amperage probe (power consumption monitoring) | |
483 | ||
484 | =item B<intr> | |
485 | ||
486 | Intrusion sensor | |
487 | ||
488 | =back | |
489 | ||
490 | =back | |
491 | ||
492 | =head1 CHECK CONTROL | |
493 | ||
494 | =over 4 | |
495 | ||
496 | =item --only I<KEYWORD> | |
497 | ||
498 | This option can be specifed once and expects a keyword. The different | |
499 | keywords and the behaviour of check_openmanage is described below. | |
500 | ||
501 | =over 4 | |
502 | ||
503 | =item B<critical> | |
504 | ||
505 | Print only critical alerts. With this option any warning alerts are | |
506 | suppressed. | |
507 | ||
508 | =item B<warning> | |
509 | ||
510 | Print only warning alerts. With this option any critical alerts are | |
511 | suppressed. | |
512 | ||
513 | =item B<chassis> | |
514 | ||
515 | Check all chassis components and nothing else. | |
516 | ||
517 | =item B<storage> | |
518 | ||
519 | Only check storage | |
520 | ||
521 | =item B<memory> | |
522 | ||
523 | Only check memory modules | |
524 | ||
525 | =item B<fans> | |
526 | ||
527 | Only check fans | |
528 | ||
529 | =item B<power> | |
530 | ||
531 | Only check power supplies | |
532 | ||
533 | =item B<temp> | |
534 | ||
535 | Only check temperatures | |
536 | ||
537 | =item B<cpu> | |
538 | ||
539 | Only check processors | |
540 | ||
541 | =item B<voltage> | |
542 | ||
543 | Only check voltage probes | |
544 | ||
545 | =item B<batteries> | |
546 | ||
547 | Only check batteries | |
548 | ||
549 | =item B<amperage> | |
550 | ||
551 | Only check power usage | |
552 | ||
553 | =item B<intrusion> | |
554 | ||
555 | Only check chassis intrusion | |
556 | ||
557 | =item B<esmhealth> | |
558 | ||
559 | Only check ESM log overall health, i.e. fill grade | |
560 | ||
561 | =item B<esmlog> | |
562 | ||
563 | Only check the event log (ESM) content | |
564 | ||
565 | =item B<alertlog> | |
566 | ||
567 | Only check the alert log content | |
568 | ||
569 | =back | |
570 | ||
571 | =item --check I<STRING> or I<FILE> | |
572 | ||
573 | This parameter allows you to adjust which components that should be | |
574 | checked at all. This is a rougher approach than blacklisting, which | |
575 | require that you specify component id or index. The parameter should | |
576 | be either a string containing the adjustments, or a file containing | |
577 | the string. No errors are raised if the file does not exist. | |
578 | ||
579 | Note: This option is ignored with alternate basenames. | |
580 | ||
581 | =over 9 | |
582 | ||
583 | =item B<Example:> | |
584 | ||
585 | check_openmanage --check storage=0,intrusion=1 | |
586 | ||
587 | =back | |
588 | ||
589 | Legal values are described below, along with the default value. | |
590 | ||
591 | =over 4 | |
592 | ||
593 | =item B<storage> | |
594 | ||
595 | Check storage subsystem (controllers, disks etc.). Default: ON | |
596 | ||
597 | =item B<memory> | |
598 | ||
599 | Check memory (dimms). Default: ON | |
600 | ||
601 | =item B<fans> | |
602 | ||
603 | Check chassis fans. Default: ON | |
604 | ||
605 | =item B<power> | |
606 | ||
607 | Check power supplies. Default: ON | |
608 | ||
609 | =item B<temp> | |
610 | ||
611 | Check temperature sensors. Default: ON | |
612 | ||
613 | =item B<cpu> | |
614 | ||
615 | Check CPUs. Default: ON | |
616 | ||
617 | =item B<voltage> | |
618 | ||
619 | Check voltage sensors. Default: ON | |
620 | ||
621 | =item B<batteries> | |
622 | ||
623 | Check system batteries. Default: ON | |
624 | ||
625 | =item B<amperage> | |
626 | ||
627 | Check amperage probes. Default: ON | |
628 | ||
629 | =item B<intrusion> | |
630 | ||
631 | Check chassis intrusion. Default: ON | |
632 | ||
633 | =item B<esmhealth> | |
634 | ||
635 | Check the ESM log health, i.e. fill grade. Default: ON | |
636 | ||
637 | =item B<esmlog> | |
638 | ||
639 | Check the ESM log content. Default: OFF | |
640 | ||
641 | =item B<alertlog> | |
642 | ||
643 | Check the alert log content. Default: OFF | |
644 | ||
645 | =back | |
646 | ||
647 | =back | |
648 | ||
649 | =head1 DIAGNOSTICS | |
650 | ||
651 | The option C<--debug> (or C<-d>) can be specified to display all | |
652 | monitored components. | |
653 | ||
654 | =head1 DEPENDENCIES | |
655 | ||
656 | If SNMP is requested, the perl module Net::SNMP is | |
657 | required. Otherwise, only a regular perl distribution is required to | |
658 | run the script. On the target (monitored) system, Dell Openmanage | |
659 | Server Administrator (OMSA) must be installed and running. | |
660 | ||
661 | =head1 EXIT STATUS | |
662 | ||
663 | If no errors are discovered, a value of 0 (OK) is returned. An exit | |
664 | value of 1 (WARNING) signifies one or more non-critical errors, while | |
665 | 2 (CRITICAL) signifies one or more critical errors. | |
666 | ||
667 | The exit value 3 (UNKNOWN) is reserved for errors within the script, | |
668 | or errors getting values from Dell OMSA. | |
669 | ||
670 | =head1 AUTHOR | |
671 | ||
672 | Written by Trond H. Amundsen <t.h.amundsen@usit.uio.no> | |
673 | ||
674 | =head1 BUGS AND LIMITATIONS | |
675 | ||
676 | Storage info is not collected or checked on very old PowerEdge models | |
677 | and/or old OMSA versions, due to limitations in OMSA. The overall | |
678 | support on those models/versions by this plugin is not well tested. | |
679 | ||
680 | =head1 INCOMPATIBILITIES | |
681 | ||
682 | The plugin should work with the Nagios embedded perl interpreter | |
683 | (ePN). However, this is not thoroughly tested. | |
684 | ||
685 | =head1 REPORTING BUGS | |
686 | ||
687 | Report bugs to <t.h.amundsen@usit.uio.no> | |
688 | ||
689 | =head1 LICENSE AND COPYRIGHT | |
690 | ||
691 | This program is free software: you can redistribute it and/or modify | |
692 | it under the terms of the GNU General Public License as published by | |
693 | the Free Software Foundation, either version 3 of the License, or (at | |
694 | your option) any later version. | |
695 | ||
696 | This program is distributed in the hope that it will be useful, but | |
697 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
698 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
699 | General Public License for more details. | |
700 | ||
701 | You should have received a copy of the GNU General Public License | |
702 | along with this program. If not, see L<http://www.gnu.org/licenses/>. | |
703 | ||
704 | =head1 SEE ALSO | |
705 | ||
706 | L<http://folk.uio.no/trondham/software/check_openmanage.html> | |
707 | ||
708 | =cut |