Do you have freezers and other electrical equipment at home and worry about whether they'll be all right while you're away on holiday? Do you have a broadband connection with a rarely changing IP address, and a web site that you host with a web space provider? Then you'll be able to set up a "heartbeat" script to check out your home systems. We're doing this to keep an eye on Well House Manor, where we have two separate power feeds and want to be alerted if either of them trips.
Sample Scheme (what we have done - there are lots of alternatives at some stages):
a) Set up your home modem / router to point to a local machine that's permanently running, and is running Apache httpd and PHP. We have a Mac mini that fulfils this role. On this machine write a very simple web page that returns a status, such as:
<?php print(`uptime`); ?>
b) Set up a script of your main web site (remote from home) that runs this script, analyses the results, and emails you if there's a problem. We have a sample of such a script
here ... ours is slightly more sophisticated in that is also looks at the server loading and reports back if there are overloading issues too
c) Set up a regular timed (crontab) job on your web site to run the 'heartbeat' script at an appropriate frequency. We have the following line in our 'crontab' file:
9,24,39,54 * * * * /usr/local/bin/php /home/welho/private/zzppxping.php
Here is my slightly longer explanation of the various things this script will catch, taken from the comments I have added so that I can remember what I did when I come to look at the script in the future ...
/* Heartbeat script - to run regularly on crontab and gather server
status from Well House Manor. This script runs on a remote server and
will email us if:
a) The Router at Well House Manor is not responding
e.g. changed IP, power failure
b) The Manor Web server is down
e.g. switched off / disconnected / has no power
c) Software issue on web server
i.e. the httpd daemon is not running or is overloaded */
I should now write an equal and opposite script that has our local server checking that the web space provide system is live and responding ;-)
(written 2009-04-29 23:35:26)
Associated topics are indexed under
G996 - Well House Consultants - Newsletter Scripts [2539] Changing Images - (2009-12-17)
[2433] Controlling, supressing, enabling PHP error messages - (2009-10-02)
[2360] Error Handling in Lua with assert and pcall - (2009-08-13)
[2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
[2046] Finding variations on a surname - (2009-02-17)
[1954] mod_rewrite for newcomers - (2008-12-20)
[1813] Ajax - going Asyncronous and what it means - (2008-09-28)
[1743] First class functions in Lua lead to powerful OO facilities - (2008-08-07)
[1665] Factory method example - Perl - (2008-06-04)
[1601] Replacing the last comma with an and - (2008-04-04)
[1505] Script to present commonly used images - PHP - (2008-01-13)
[1487] Efficient PHP applications - framework and example - (2007-12-28)
[1387] Error logging to file not browser in PHP - (2007-10-11)
[1321] Resetting session based tests in PHP - (2007-08-26)
[1217] What are factory and singleton classes? - (2007-06-04)
[1123] mysqldump and mysqlrestore - (2007-03-30)
[1066] Final, Finally and Finalize - three special words in Java - (2007-02-05)
[1001] .pdf files - upload via PHP, store in MySQL, retrieve - (2006-12-19)
A166 - Web Application Deployment - Linux Utilities [2638] Finding what has changed - Linux / Unix - (2010-02-17)
[2484] Finding text and what surrounds it - contextual grep - (2009-10-30)
[2320] Helping new arrivals find out about source code examples - (2009-08-03)
[1690] Conversion of c/r line ends to l/f line ends - (2008-06-28)
[1366] awk - a powerful data extraction and manipulation tool - (2007-09-25)
[1361] Korn shell course - (2007-09-22)
[71] Comparators in Linux and Unix - (2004-10-03)
[63] Almost like old times - (2004-09-26)
A164 - Web Application Deployment - Services and Regular Jobs [2182] What Linux run level am I in? - (2009-05-15)
[1903] daemons - what is running on my Linux server? - (2008-11-23)
[1765] Dialects of English and Unix - (2008-08-21)
[1733] memcached - overview, installation, example of use in PHP - (2008-08-02)
[1731] Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
[1700] FTP server on Fedora Linux - (2008-07-06)
[1633] Changing a screen saver from a web page (PHP, Perl, OSX) - (2008-05-06)
[1553] Automatic startup and shutdown of Tomcat - (2008-02-24)
[1288] Linux run states, shell special commands, and directory structures - (2007-08-03)
[1028] Linux / Unix - process priority and nice - (2007-01-10)
[907] Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28)
[544] Repeating tasks with crontab - (2005-12-27)
Some other Articles
Routing Network Traffic - Proxies, Redirects and DNSVariable scope in Java Servlets and other web applicationsA very easy JSP (Java Server Page)An evening excursion to Devizes and AveburyUsing the internet to remotely check for power failure at home (PHP)Looking for a career change - Physician to Web Site DesignerThroughout the year, around the worldRiverside DevelopmentTown Crier competitonBeware - giving copyright away when you upload a picture - Dogs Trust