如何利用php script與icq來達成監看server的目地

圖文.我本善良 (asako@parzival.org)



●本文●

 既然我們的主題是php與icq,當然也就要有這兩個程式才行。抓php當然還是到php大
本營http://www.php.net 去抓最新版,筆者寫這篇文章時php最新的版本為4.03,請您
注意的是我們要的是把php編譯成cgi模式的php所以筆者建議您抓source code。
 再來就是icq了,您可以在這裡找到最適合我們來呼叫使用的
icq,http://yasd.dhs.org/en/icqsend.php3這裡筆者就建議您直接抓tar ball的版
本。雖然是tar ball的版本實際上它內含了Source Code及 編譯好的檔案,如果您最後
還是決定您自個兒要編譯icesend請您也一並抓取libicq,因為在重新編譯時您會用到
的。


 一:安裝php:在這裡假設我們是使用root來登入機器的,把我們抓下來的php解開,
並在其目錄下,打上 ./configure;make
圖一:


如果沒有錯誤的話您會在這個目錄下找到一個php的執行檔,
圖二:



這時我們可以把php搬移到/usr/bin底下,到目前為止編譯php的工作已經完成。
圖三:


 二:取得icq帳號兩個:為什麼我們要取得icq帳號兩個,其中一個是用來接收icq訊息
的帳號,一個是用來傳送icq訊息的帳號,

 三:安裝icqsend:把我們抓下來的icqsend解開來,您會在這個目錄下找到一個
icesend的執行檔,同樣的我們已把它搬移到/usr/bin 下。
圖四:


剩下來的就是設定.icqsendrc其內容如下

uid=94265776                  //您的icq的uid
password=123456               //您的icq登入密碼
url=http://www.parzival.org   //要傳送的網址
icqhost=icq4.mirabilis.com    //icq的server位罝
icqport=4000                  //icq的port
messages=sample.txt           //您要傳送的內容檔案


sample.txt 其內容如下

57422472                   // 接收者的icq的uid
Message  $$ 伺服器掛了 $$  // 訊息其中 $ 代表斷行

請您把這兩個檔案放在您的家目錄下,到目前為止,您剩下的只有 php 的程式尚未完
成而已,而現在我們就來寫php的 script 。


#!/usr/bin/php


程式說明:我們利用php的fsockopen()來開啟對192.168.1.233 port 80的socket的連
接,如果連接失敗就執行 /usr/bin/icqsend -f /root/sample.txt , 試想當連接失敗
時不就意味著web已經掛了嗎?此時server就會用icq來通知您。
但我們總不能一直用手動執行這支程式吧。所以我們要把它加入至crontab裡
例如:每五分作一次,而且不要回覆信件給corntab的使用者。

*/5 * * * * /root/monitor.php3 >/dev/null 2>&1

這裡您要注意的是。Crontab的使用者下要有 .icqsendrc
到目前為止我們已經作好了完整的動作了,現在只要伺服器罷工,icq 自然會通知您。
當然您也打開您 icq的聲音,人對於聲音的感覺總是比較直接。

●結語●
 結語:有些時候伺服器掛了對公司及mis來說得確是一個大問題,筆者寫這個程式也是
為了自已的方便,只因為筆者有十幾台伺服器要管理。目前這個程式也是屬於簡單型,
還有很大的想像的空間可以創造出很多有意思的程式,而這個希望就由各位讀者去創造
了。

 附註:筆者的測試環境主機為 Redhat 6.0 + Cle0.8 Kernel 2.2.16 而工作站為
win95 + icq99b更多的icqsend的參數您可以參考其目錄下的USAGE.txt