專營各式拆除工程:廠房拆除、房屋拆除
裝潢拆除、機械拆除及廢五金回收買賣。
窗簾壁紙環保投藥無汙染,專業技術有效對抗惱人老鼠
全面守護您!價格公道實惠,請速洽!

首頁  •  j2h 論壇 • 程式設計討論     • 

[轉貼]使用 PHP 監測伺服器狀態(進階版)

房東:小優
發表時間:2007-03-10

";
echo "

// 嘟嘟伺服器狀態監測系統 - 進階版使用說明

###############################################
#A.修改簡易版必須自行編輯 host.txt 檔案的缺點 #
#B.加入新增、刪除與檢視 host.txt 檔案的功能 #
###############################################

1.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

2.可自行依照網路的連線速度狀態,修改 link.php 檔案的 $timeout 的值,設定 timeout 時間,預設為 0.2 杪

3.若在 Linux 系統下執行,請將 host.txt 檔案的擁有者與擁有群組修改為 Web Server 的執行者,並取消
admin.php 及 delete.php 檔案的 //exec('chmod 644 '); 與 //exec(chmod 444' '); 註解(取消 // 符號即可)

4.所需軟體 IIS + PHP 或 Apache + PHP

// index.html 檔案內容 - 首頁框架宣告








// title.php 檔案內容 - 意見信箱
header("Refresh:30");
$title[0] = "本程式由嘟嘟撰寫.....歡迎大家的使用";
$title[1] = "意見信箱: [email protected][email protected]";
$get = rand(0,1);
echo "
";
echo " SCROLLDELAY=1 DIRECTION=left>" . $title[$get] . "";
echo "";
?>

// admin.php 檔案內容 - 用來新增測試主機至 host.txt 檔案清單
echo "";
if (isset($_POST['first'])) {
$first = $_POST['first'];
} else {
$first = 0;
}

$title = "歡迎使用嘟嘟新增測試主機管理系統";
$file = "host.txt";
//取得現在的日期時間,並轉換成 'YYYY 年 M 月 D 日' 的格式
$date = date("Y 年 m 月 j 日",time());
//取得今天的星期, 0 為 '星期天' , 1 為 '星期一' , ... , 6 為 '星期六'
$week = date("w",time());
//陣列查表,將數字的星期,轉換成中文
$weekday = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');

echo "
";
echo "";
echo "";
echo "";
echo "";

echo "";
echo "";

echo "";
echo "";
echo "";
echo "";
echo "";

if ($first != 0) {
//判別欄位是否均有輸入的計數器
$value=0;
echo "";

$value = $value1 + $value2 + $value3;
//計算判別計數器的值是否為 7 ,是,代表表單均有輸入,否,尚有未輸入項目
if ($value == 7) {
$name=$_POST['name'];
$ip=$_POST['ip'];
$choose=$_POST['choose'];

for ( $i = 0 ; $i < 13 ; $i++) {
//將沒有勾選的項目設為 0 ,預設沒有勾選的值為 NULL
if ($choose[$i] == "") {
$choose[$i] = "0";
}
}
//排序勾選結果(POST 表單只將有勾選的項目存入陣列,陣列鍵值並沒有依照順序排列,因此要做排序動作
ksort($choose);
//取得陣列元素中的每一個元素組合成一字串
foreach ($choose as $value) {
$choose_str = $choose_str . $value;
}
//組合完整字串
$add_str = $name . "@" . $ip . "@" . $choose_str;

$choose_srv=array("FTP","SSH","TELNET","SMTP","DNS","DHCP","HTTP","POP3","SAMBA","IMAP","SNMP","PROXY","MySQL");
$len = strlen($choose_str);
echo "";
}
echo "
$title
$date" . $weekday[$week] . "
請輸入顯示名稱
請輸入IP或網域名稱
請勾選偵測項目 if (isset($_POST['choose'][0])) {
echo "CHECKED";
}
echo ">FTP   ";
echo " if (isset($_POST['choose'][1])) {
echo "CHECKED";
}
echo ">SSH  ";
echo " if (isset($_POST['choose'][2])) {
echo "CHECKED";
}
echo ">TELNET";
echo " if (isset($_POST['choose'][3])) {
echo "CHECKED";
}
echo ">SMTP";
echo " if (isset($_POST['choose'][4])) {
echo "CHECKED";
}
echo ">DNS   ";
echo " if (isset($_POST['choose'][5])) {
echo "CHECKED";
}
echo ">DHCP
";
echo " if (isset($_POST['choose'][6])) {
echo "CHECKED";
}
echo ">HTTP ";
echo " if (isset($_POST['choose'][7])) {
echo "CHECKED";
}
echo ">POP3";
echo " if (isset($_POST['choose'][8])) {
echo "CHECKED";
}
echo ">SAMBA ";
echo " if (isset($_POST['choose'][9])) {
echo "CHECKED";
}
echo ">IMAP";
echo " if (isset($_POST['choose'][10])) {
echo "CHECKED";
}
echo ">SNMP";
echo " if (isset($_POST['choose'][11])) {
echo "CHECKED";
}
echo ">PROXY
";
echo " if (isset($_POST['choose'][12])) {
echo "CHECKED";
}
echo ">MySQL
";
if(!empty($_POST['name'])) {
$value1=1;
} else {
echo "*.您尚未輸入顯示名稱
";
}
if(!empty($_POST['ip'])) {
$value2=2;
} else {
echo "*.您尚未輸入 IP 或網域名稱
";
}
if(!empty($_POST['choose'])) {
$value3=4;
} else {
echo "*.您尚未勾選測試項目
";
}
echo "
顯示名稱:$name
";
echo "IP 或主機名稱:$ip
";
echo "勾選偵測項目:";
$number = 0;
for ( $k = 0 ; $k < $len ; $k++ ) {
if ( $choose[$k] != 0) {
$number++;
if ($number > 1 && $number != 8) {
echo "、";
}
echo $choose_srv[$k];
if ($number == 7) {
echo "
         ";
}
}
}
echo "

";
echo "
";
echo "";
echo "";
echo "
";
} else {
echo "
";
}

if($_POST['add'] != "" & isset($_POST['set'])) {
// exec('chmod 644 $file');
$write = $_POST['add'];
$fp = fopen($file,a);
fputs($fp,"$write\r\n");
fclose($fp);
// exec('chmod 444 $file');
echo "
新增偵測主機完成
";
unset($_POST['add']);
}
echo "";
?>

// top.php 檔案內容 - 使用項目按鈕




請點選使用項目:










// select 檔案內容 - 開啟 "使用項目按鈕" 指定的網頁
switch ($_POST['select']) {
case 新增偵測主機清單:
header("Location: admin.php");
break;
case 顯示偵測主機清單:
header("Location: show.php");
break;
case 刪除清單中的主機:
header("Location: delete.php");
break;
default:
header("Location: link.php");
break;
}
?>

// show.php 檔案內容 - 顯示測試主機清單 host.txt 檔案的設定值
echo "";
$file = "host.txt";
$read = file("$file");

if(file_exists("$file") && count($read) != 0) {
//取得現在的日期時間,並轉換成 'YYYY 年 M 月 D 日' 的格式
$date = date("Y 年 m 月 j 日",time());
//取得今天的星期, 0 為 '星期天' , 1 為 '星期一' , ... , 6 為 '星期六'
$week = date("w",time());
//陣列查表,將數字的星期,轉換成中文
$weekday = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
echo "
";
echo "";
echo "";
$read = file("$file");
for ($i = 0 ; $i < count($read) ; $i++) {
if ($i % 2) {
$color = "ffa0ff";
} else {
$color = "ffb080";
}
$str = split('@',$read[$i]);
echo "";
}
echo "
歡迎使用嘟嘟顯示測試主機清單系統
$date " . $weekday[$week] . "
顯示名稱IP 或主機名稱偵測項目
$str[0]$str[1]$str[2]
";
} else {
echo "


偵測主機清單尚未建立,請先建立清單
";
}
echo "";
?>

// delete.php 檔案內容 - 用來刪除 host.txt 檔案清單中的測試主機
echo "";
$file = "host.txt";
$read = file($file);

if(file_exists("$file") && count($read) != 0) {
if(isset($_POST['run_del'])) {
$del_num = $_POST['del_num'];
$read[$del_num] ="";
// exec('chmod 644 $file');
$fp = fopen($file,w);
for ( $p = 0 ; $p < count ($read) ; $p++ ) {

if( $read[$p] != "" ) {
$write = $read[$p];
fputs($fp,"$write");
fclose($fp);
$fp = fopen($file,a);
}
}
fclose($fp);
// exec('chmod 444 $file');
}

//取得現在的日期時間,並轉換成 'YYYY 年 M 月 D 日' 的格式
$date = date("Y 年 m 月 j 日",time());
//取得今天的星期, 0 為 '星期天' , 1 為 '星期一' , ... , 6 為 '星期六'
$week = date("w",time());
//陣列查表,將數字的星期,轉換成中文
$weekday = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
echo "
";
echo "";
echo "";
$read = file($file);
echo "";
for ($i = 0 ; $i < count($read) ; $i++) {
if ($i % 2) {
$color = "ffa0ff";
} else {
$color = "ffb080";
}
$str = split('@',$read[$i]);
echo "";

}
echo "";
echo "
歡迎使用嘟嘟刪除測試主機管理系統
$date " . $weekday[$week] . "
點選刪除項目顯示名稱IP 或主機名稱偵測項目
$str[0]$str[1]$str[2]
";
if(isset($_POST['run_del'])) {
echo "
刪除主機完成
";
}
if(count($read) == 0) {
echo "

偵測主機清單已清空,請重新建立清單
";
}
} else {
echo "

偵測主機清單尚未建立,請先建立清單
";
}

if(isset($_POST['delete']) & !isset($_POST['del']) ) {
echo "
您尚未選擇刪除項目,請先選取
";
}

if(isset($_POST['del'])) {
$choose_srv=array("FTP","SSH","TELNET","SMTP","DNS","DHCP","HTTP","POP3","SAMBA","IMAP","SNMP","PROXY","MySQL");
$del_num = $_POST['del'];
$del_str = split('@',$read[$del_num]);
$len = strlen($del_str[2]);

echo "
";
echo "";
echo "";
echo "";
echo "";
echo "
您選擇的刪除項目內容
顯示名稱:$del_str[0]
IP 或主機名稱:$del_str[1]
服務項目:";

$number = 0;

for ( $q = 0 ;$q < $len ; $q++ ) {
$get_srv = substr($del_str[2],$q,1) ;
if ( $get_srv != 0 ) {
$number++;
if ( $number > 1 ) {
echo "、";
}
echo $choose_srv[$q];
}
}
echo "
";
echo "
";
echo "";
echo "";
echo "
";
}
echo "";
?>

// link.php 檔案內容 - 用來顯示主機的測試結果
//設定更新時間
header("Refresh:600");
echo "";

//標題
$title = "歡迎使用嘟嘟伺服器狀態監測系統";
//取得現在的日期時間,並轉換成 'YYYY 年 M 月 D 日' 的格式
$date = date("Y 年 m 月 j 日",time());
//取得今天的星期, 0 為 '星期天' , 1 為 '星期一' , ... , 6 為 '星期六'
$week = date("w",time());
//陣列查表,將數字的星期,轉換成中文
$weekday = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
//顯示表格
echo "";
//顯示標題
echo "";
//顯示檢測項目
echo "";
//檢測檔案名稱,檔案內容的格式如下所示,以 @ 符號分隔,一列表示一個監測主機,監測項目共有 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";
//取得檔案內容存入陣列,一個元素代表一列

//判別清單檔案是否存在
if(file_exists($file)) {
$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 "";

//取得測試項目的長度,並去除頭尾的空白字元
$len = strlen(trim($get_line[$i][2]));

//測試 timeout 時間
$timeout = 0.2;

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 "";
} else {
echo "";
}
} else {
echo "";
}
}
echo "";
}
//備註
$message = "備註:
  1.N/A 表示未測試
  2.測試結果僅供參考,無法確定伺服器是否能正常運作
  3.本監測畫面每 10 分鐘更新一次
  4.若您的網路速度較慢,請修改 link.php 檔案的 \$timeout 時間(預設為 0.2秒),以避免偵測錯誤";
echo "";
echo "
$title
$date " . $weekday[$week] . "
主機名稱偵測時間FTPSSHTELNETSMTPDNSDHCPHTTPPOP3SAMBAIMAPSNMPPROXYMySQL
" . $get_line[$i][0] . "" . date("H:i:s",time()) . " 成功失敗 N/A
$message
";

} else {
echo "

偵測主機清單尚未建立,請先建立清單
";
}
echo "";
?>

// down.php - 首頁說明與注意事項
//header("Location: link.php");
echo "

";
//標題
$title = "歡迎使用嘟嘟伺服器狀態監測系統";
//取得現在的日期時間,並轉換成 'YYYY 年 M 月 D 日' 的格式
$date = date("Y 年 m 月 j 日",time());
//取得今天的星期, 0 為 '星期天' , 1 為 '星期一' , ... , 6 為 '星期六'
$week = date("w",time());
//陣列查表,將數字的星期,轉換成中文
$weekday = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
//顯示表格
echo "
";
//顯示標題
echo "";
echo "";
echo "








$title
$date " . $weekday[$week] . "
功能: 用來監控 '偵測主機清單' 中的的主機狀態,並可對偵測主機清單進行新增與刪除的動作
作者: 嘟嘟
版本: Ver 1.0
建立日期: 2005-02-22
使用說明:
1.顯示偵測主機狀態: 讀取偵測主機清單,進行測試
2.新增偵測主機清單: 增加偵測主機至偵測主機清單
3.顯示偵測主機清單: 顯示偵測主機清單中的所有項目
4.刪除清單中的主機: 刪除偵測主機清單中的指定項目
備註:
1.本程式允許任何人的使用與修改

2.若在 Linux 系統下執行,請將 host.txt 檔案的擁有者與擁有群組修改為 Web Server 的執行者,並取消

  admin.php 及 delete.php 檔案的 exec('chmod 644 $file'); 與 exec(chmod 444' $file'); 註解
";
?>




  • 贊助網站       

    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!
    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務



  •  共 0 人回應

    姓名:
    佈告內容:
    其他選項: