Listing 1 Simple DNS monitoring script
#!/usr/local/bin/php
<?PHP
/*
Simple DNS monitoring script for use with ProBIND
This script generates html which can be use to overwrite blank.html
in the ProBIND directory.
For best results run from cron and re-direct output to blank.html
Author: Mark Barrow, mark.barrow@blconsulting.co.uk
*/
// replace the below with your server ip Addresses.
$servers=array("192.168.1.2","192.168.1.3","192.168.12.1", \
"10.10.1.1","10.10.1.2");
// replace the below with the DNS name you want to run tests against.
$name="www.blconsulting.co.uk";
function checkDNSServer($server,$name)
{
global $result;
$result='';
exec("/usr/sbin/dig @$server $name",$result);
foreach ($result as $line) {
if (preg_match("/Got answer:/i",$line))
{
return true;
}
}
}
?>
<HTML><TITLE>Blank</TITLE>
<BODY bgcolor="#AAAA77">
<p align="right"><a href="help.html"><font face="Arial, Helvetica, \
sans-serif" size="4">help</font></a> </p>
<p align="center"> </p>
<p align="center"><font face="Arial, Helvetica, sans-serif"><b> \
<font size="5">DNS Server Status</font></b></font></p>
<p align="center"><font size="2" face="Arial, Helvetica, \
sans-serif">(Run as cron job against /var/ProBIND/dns.php)</font></p>
<TABLE border="4" align=center width="70%">
<tr><td><b>Server Address</td><td><b>Last Checked</td><td> \
<b>Error Output</td></tr>
<?php
foreach ($servers as $server) {
$output = checkDNSServer($server,$name);
if ($output == true)
{
echo "<tr><td vailgn='top'>server $server is alive</td> \
<td vailgn='top'>" . date("l dS of F Y h:i:s A") . \
"</td><td vailgn='top'> </td></tr>";
}
else {
echo "<tr><td vailgn='top'><font color=#FF0000>server \
$server is dead</font></td><td vailgn='top'> \
<font color=#FF0000>Last Checked -->" . \
date("l dS of F Y h:i:s A") . "</font></td>";
echo"<td vailgn='top'><font color=#FF0000>";
foreach ($result as $line) {
echo "" . $line;
}
echo "</font></td></tr>";
}
}
echo "</table>";
?> |