SAWDOG - Simple Active Watch-DOG
Simple: less than 1000 lines of code
Active: No need for daemons on the servers
SAWDOG - A collection of simple scripts, which informs in case of server outages Copyright 1999-2000 by Christian Gloor
This piece of code is distributed under the terms of the GNU General Public License (GPL) You should have received a copy of the GPL (file COPYING) along with this script; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
Current maintainer: chgloor@digicomp.ch, don't hesitate to contact him if you have any questions.
Changelog
Fall 1999: 1.0.0 initial - chgloor@digicomp.ch: initial release for internal use only May 2000: 1.2.0 - michi@digicomp.ch: changed for sms use only May 2000: 2.0.0 phoenix - chgloor: additional features (unknown state, logfile, locking) michi: additional expect scripts (icmp, smb) June 2000: 2.1.0 generic - chgloor: compact notification, one message per server aliases for long server names or ip addresses generic notification (can execute any binaries now) June 2000: 2.2.0 speedup - chgloor: speedup in the expect scripts 'required' freature
Sept 2006: 2.4.0 webinterface - max added php-based web interface,
chgloor: code cleanup
This is the README for Version 2.4.x
- Abstract
This script was initially written by Christian Gloor. About half a year later, it was adapted for use at DIGICOMP AG, a IT education company located in switzerland.
Sawdog consists of a script which informs the sysops of some mission critical servers in the case of a failure. The script executes a given set of small executables, i.e. expect scripts, and if one executable fails, sends an email or a sms to the sysop.
2) Installation
The main script is sawdog.pl. It can be placed everywhere on the filesystem. However, if you run install.sh, it will place the script in /usr/local/bin/sawdog
At the moment, the only configuration is done in the sawdog.conf file. If you keep this file not in the current directory, you need to edit the sawdog.pl source file. All file locations are stored in the sawdog.pl file.
You can use crontab to start sawdog.pl every 5 minutes, e.g.
*/5 * * * * root ( cd /usr/local/bin/sawdog/; ./sawdog.pl notify )
Sawdog creates a logfile: sawdog.log and a status file: sawdog.status, if they don't exist, sawdog recreates them. Of course sawdog needs write permissions on the working directory.
There are some predefined expect scripts for some well known services: ftp, http, icmp, ssh, telnet, and smb. You can easily create your own expect scripts, or use any other executable which returns a return code of zero if it succeeds. Don't forget to contribute your aditions to the main code tree.
Files needed:
- sawdog.pl the main file
- sawdog.conf the config file
- services/ this directory is populated by the expect scripts
Files recreated, if they don't exist:
- sawdog.status in this file the internal state is keept
- sawdog.log the logfile 3) Usage/Configuration
See the postscript/pdf documentation
4) To Do
Create some more expect scripts for more ports.
Build a nice package.
Correct spelling and grammar errors in the readme files.
Clean up the source
