设为首页 收藏本站
查看: 417|回复: 0

[经验分享] [分享]使用 PHP 監測伺服器狀態

[复制链接]

尚未签到

发表于 2017-4-10 10:03:55 | 显示全部楼层 |阅读模式
  使用說明:
//必須自行建立檢測檔 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><FONTSIZE=5><B> $title </B><BR> $date " .$weekday[$week] . "</FONT></TD></TR>";
//顯示檢測項目
echo"<TRBGCOLOR=#ccddee><TH>主機名稱</TH><TH>偵測時間</TH>&lt;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>";
?>

  来源:http://phorum.vbird.org/viewtopic.php?f=1&t=17573

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-362760-1-1.html 上篇帖子: PHP调用三种数据库的方法(1) 下篇帖子: [转] 贴Snoopy.class.php代码学习参考
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表