小預算改造推薦!銷售各式壁紙、壁布等產品
輕鬆變換空間氛圍,質感設計花色多
通水管提供種類豐富的門窗樣式,氣密窗、採光罩、玻璃屋等
解決噪音困擾,享受寧靜

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

[轉貼]使用 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] . \"
請輸入顯示名稱 if (isset($_POST[\'name\'])) {
echo $_POST[\'name\'];
}
echo \" >
請輸入IP或網域名稱 if (isset($_POST[\'ip\'])) {
echo $_POST[\'ip\'];
}
echo \" >
請勾選偵測項目 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 人回應

    姓名:
    佈告內容: