文章出处:PHP-twbb
http://www.twbb.org/...dex.php这是一个测试伺服器的小程式,大家可以试试喔
使用说明:
//必须自行建立检测档 host.txt 档案
//档案内容的格式如下所示,以 @ 符号分隔,一列表示一个监测主机,监测项目共有 13 项, 1 代表要监测, 0 代表不监测,
// 13 个项目分别表示 FTP、SSH、TELNET、SMTP、DNS、DHCP、HTTP、POP3、SAMBA、IMAP、SNMP、PROXY、MySQL
//格式:
// 主机名称@IP 位址或主机名称@监测项目
//范例:
// 嘟嘟学习网@192.168.0.254@1100110011101
// 检测档 host.txt 内容
嘟嘟学习网@61.111.111.111@1101111111101
Loopback@111.111.111.111@1110111111011
192.168.0.254@192.168.0.254@1110111110111
192.168.1.254@192.168.0.254@1101111111011
localhost@127.0.0.1@1111111100111
K7 1.2G@61.111.111.113@1100111111110
// 主程式 link.php 档案内容
<?php
//设定更新时间
header("Refresh:600");
//标题
$title = "欢迎使用嘟嘟伺服器状态监测系统";
//取得现在的日期时间,并转换成 'YYYY 年 M 月 D 日' 的格式
$date = date("Y 年 m 月 j 日",time());
//取得今天的星期, 0 为 '星期天' , 1 为 '星期一' , ... , 6 为 '星期六'
$week = date("w",time());
//阵列查表,将数字的星期,转换成中文
$weekday = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
//显示表格
echo "<TABLE BORDER=20 WIDTH=900 ALIGN=CENTER BGCOLOR=#00ff00>";
//显示标题
echo "<TR><TD ALIGN=CENTER COLSPAN=15 BGCOLOR=#cc44ff><FONT SIZE=5><B> $title </B><BR> $date " . $weekday[$week] . "</FONT></TD></TR>";
//显示检测项目
echo "<TR BGCOLOR=#ccddee><TH>主机名称</TH><TH>侦测时间</TH><TH>FTP</TH><TH>SSH</TH><TH>TELNET</TH><TH>SMTP</TH><TH>DNS</TH><TH>DHCP</TH><TH>HTTP</TH><TH>POP3</TH><TH>SAMBA</TH><TH>IMAP</TH><TH>SNMP</TH><TH>PROXY</TH><TH>MySQL</TH></TR>";
//检测档案名称,档案内容的格式如下所示,以 @ 符号分隔,一列表示一个监测主机,监测项目共有 13 项, 1 代表要监测 ,
// 0 代表不监测, 13 个项目分别表示 FTP、SSH、TELNET、SMTP、DNS、DHCP、HTTP、POP3、SAMBA、IMAP、SNMP、PROXY、MySQL
//
//格式:
// 主机名称@IP 位址或主机名称@监测项目
//范例:
// 嘟嘟学习网@192.168.0.254@1100110011101
$file = "host.txt";
//取得档案内容存入阵列,一个元素代表一列
$get = file("$file");
//取得测试主机数量,计算 $get 阵列的元素数目即可得知
$host_count = count($get);
//定义测试 port 清单
$port = array(21,22,23,25,53,67,80,110,139,143,161,3128,3306);
for ( $i = 0 ; $i < $host_count ; $i++ ) {
//切割每一列的资料存入阵列,以 @ 为分割符号, $get_line[$i][0] 为主机名称 , $get_line[$i][1] 为测试的 IP 或主机名称
//$get_line[$i][2] 为测试项目,共有 13 项
$get_line[$i] = split("\@",$get[$i]);
//显示栏位名称
echo "<TR><TD BGCOLOR=#62defe>" . $get_line[$i][0] . "</TD><TD BGCOLOR=#77ff00 ALIGN=CENTER>" . date("H:i:s",time()) . "</TD>";
//取得测试项目的长度,并去除头尾的空白字元
$len = strlen(trim($get_line[$i][2]));
//测试 timeout 时间
$timeout = 1;
for ( $j = 0 ; $j < $len ; $j++) {
//各别取出比对项目每一项的值,若等于 1 ,就做测试 , 0 测不做测试
if (substr($get_line[$i][2],$j,1) == "1") {
//进行测试,并抑制错误讯息输出
$test[$j] = @fsockopen($get_line[$i][1],$port[$j],$errno,$errstr,$timeout);
//显示测试结果
if ($test[$j]) {
echo "<TD BGCOLOR=yellow align=center>成功</FONT></TD>";
} else {
echo "<TD BGCOLOR=red align=center><FONT COLOR=white>失败</FONT></TD>";
}
} else {
echo "<TD BGCOLOR=#fed19a align=center><FONT COLOR=blue> N/A </FONT></TD>";
}
}
echo "</TR>";
}
//备注
$message = "<B>备注:</B><BR> 1.N/A 表示未测试 <BR> 2.测试结果仅供参考,无法确定伺服器是否能正常运作<BR> 3.本监测画面每 10 分钟更新一次";
echo "<TR><TD COLSPAN=15 BGCOLOR=#f77dfd> $message </TD><TR>";
echo "</TABLE>";
?>
_________________