Each host should have the following attributes associated with it:
* services the network services running on that hostOptionally, the follow attributes can also be assigned to a host:
* down time period the host is scheduled down, problems are not reported during this time. * ip_addr a list of ip addresses corresponding to multiple interfaces the machine might have.The services is a string listing the valid services seperated by spaces. Currently, valid services are ``dns'' (if you have the Net::DNS Perl module installed), ``ftp'', ``smtp'', ``http'', ``imap'', ``pop3'', ``nntp'', ``nfs'', ``ntp'' and``ssh'' although more checks will be added in the future. The can include any addition network checks that you have developed (see spong-network for more details) . Any host listed is automatically checked for network connectivity (via ping).
The down attribute is a list of ``downtimes''. It is a list (well reference to one anyway) of one or more strings in the following format - ``d:hh:mm-hh:mm''. ``d'' is the day of the week (0-6, 0 = Sunday, 6 = Saturday), if ``d'' is ``*'', then every day of the week is matched. The string to the right of the day is the start and end time of the down time in 24 hour format
The ip_addr attribute is a list (well reference to one anyway) of IP address that the machine responds to.
Each human that is defined should have the following attributes associated with it:
* name name of the person to contactAnd one or more of the following attributes assigned to each human for messaging when there are problems
* email email address * skytel skytel pager number * alltelsms phone number of a phone subscribered to Alltel Communications SMS service. * teletouch teletouch pager number * teletouch_short teletouch pages numer for small alpha pagers
These attributes are messaging functions for sending out notifictions to people. All of the messing methods are message modules that are load by the spoing-message as a plugin. The attributes listed above are the message functions that are part of the current Spong distribution. New messaging modules can be easily be developed (see the spong-message manual and the Developer Guide for more details).
What is expected in this file are the definitions for two hashes of hashes (in Perl speak). The %HOSTS hash, and the %HUMANS hash. If you are not comfortable with Perl lingo, then just think of them as stanza definitions.
First, the HUMANS. The following describes the %HUMANS hash.
%HUMANS = ( [stanza], [stanza], [stanza] );where [stanza] is a second hash, that looks like the following:
'unix-staff' => { name => 'Midrange On-call Staff', email => 'its-unix@uiowa.edu', skytel => '1234567' },What this says is that the 'unix-staff' human has the following attributes (name = Midrange On-call Staff, email = its-unix@uiowa.edu, skytel = 1234567).
Now, the HOSTS. The following describes the %HOSTS hash.
%HOSTS = ( [stanza], [stanza], [stanza] );where [stanza] is a second hash, that looks like the following:
'www.uiowa.edu' => { services => 'ftp smtp http', ip_addr => ['192.168.15.2','10.2.124.200'],
down => [ '*:0015-0030','6:23:00-23:59'] }What this says is that the 'www.uiowa.edu' host has the following attributes (services = ftp smtp http; ip address=192.168.15.2 and 10.2.124.200; and down time of 12:15AM-12:30AM every day and from 11:00PM-12:00PM on Saturdays).
I know the format can be a little odd at first, but I chose it because of both its simplicity to work with in the code (I don't have to parse anything - Perl does all the work), and because it is easy to extend - adding additional attributes is quite straightforward.
%HUMANS = ( 'unix-staff' => { name => 'Midrange On-call Staff', email => 'its-unix@school.edu', 'edhill' => { name => 'Ed Hill', email => 'ed-hill@school.edu', skytel => '1234567' }, ); %HOSTS = ( 'strobe.weeg.school.edu' => { services => 'dns ftp smtp http', ip_addr => [ '128.255.1.3', '128.255.64.3' ], down => [ "*:05:30-06:30", "0:00:00-04:00 ] }, 'www.school.edu' => { services => 'ftp smtp http' }, );
Based on code/ideas from Sean MacGuire (BB), and Helen Harrison (Pong).