按小刁的意思,首先把昨天的檢測指令碼改成帶有複位功能的,然後把警示提示以郵件方式發送到指定的郵箱。
---------------------------------------------------------------------------------------------------------------------------------------
http://lvdbing.blog.163.com/blog/static/55801529200832111630600/ (這裡也說明了如何用perl來發送郵件,清參照網頁)
使用Net::SMTP_auth發郵件,首先要先安裝Net::SMTP_auth模組。
1. Windows Operating System:如果是在windows作業系統使用的ActivePerl的話,則進入ActivePerl的安裝目錄的可執行程式目錄,也就是bin目錄。(例如:C:\Perl\bin)執行命令ppm-shell ,(PPM:Perl Package Manager
Perl包管理器),然後執行命令:
C:\Perl\bin>ppm-shell
ppm 4.01
Copyright (C) 2007 ActiveState Software Inc. All rights reserved.
ppm>install Net::SMTP_auth
2. Linux Operating System:如果是在linux作業系統使用Perl的話,則使用命令cpan後面跟要安裝的模組就可以了。(如果是第一次使用cpan的話,會要求先配置cpan的一些資訊,一直按預設的設定就可以了)。
[root@lvdbing.net ~]# cpan Net::SMTP_auth
PS: 網頁裡面提到的的確可以發送郵件,但是發送中文時會出現亂碼;所以又到網上找到瞭解決方案,以下這個是可行的解決方案。
我們經常發送中文的電子郵件,而電子郵件的編碼寫web不大一樣。我們一般用base64的編碼來處理郵件標頭中非ascii字元。而現在UTF-8是web上最通用的編碼。
代碼$smtp->datasend("Content-Type:text/plain;charset=UTF-8\n"); #這裡設定郵件內容的編碼
$smtp->datasend("Subject:=?UTF-8?B?".encode_base64($title, '')."?=\n\n"); #encode_base64是MIME::Base64模組中的函數,$title為UTF-8編碼過的
$smtp->datasend($mail_body." \n"); #$mail_body為UTF-8編碼過的
其中=?UTF-8?B?為首碼,?=為尾碼,B表示Base64編碼。在郵件標頭的標題中,必須先用utf-8編碼,然後再用base64編碼,而郵件體就可以直接採用UTF-8的編碼。
這樣發出的郵件,就不會出現中文亂碼的問題。
http://www.belltoy.net/chinese-in-email.html
---------------------------------------------------------------------------------------------------------------------------------------
Perl調用其他程式方法
1. system(”command”);
使用該命令將開啟一個子進程執行引號中的命令,父進程將等待子進程結束並繼續執行下面的代碼。
2. exec(”command”);
效果同system命令類似,區別是不會開啟子進程,而是取代父進程,因此執行完引號中的命令後進程即結束。一般和fork配合使用。
3. `command`;
使用反引號調用外部命令能夠捕獲其標準輸出,並按行返回且每行結束處附帶一個斷行符號。反引號中的變數在編譯時間會被插入為其值。
4. open LIST “ls -l|”;
open MORE “|more”;
@list=;
print MORE @list;
close(LIST);
close(MORE);
使用帶管道的檔案控制代碼來執行外部命令,使用方式與讀寫檔案類似。可以從外部命令的輸出讀取資料,也可以將資料輸出到外部命令作為輸入。
5. defined(my $pid=fork) or die “Can not fork: $!\n”;
unless ($pid) {
exec (”date”);
}
waitpid ($pid,0);
使用fork將會開啟子進程與父進程同時執行之後的代碼,其中父進程中fork會返回一個非零的數,而子進程中將返回零。
上面的程式碼完成和system(”date”)相同的功能。比起system單純地調用外部命令,fork可以完成更加複雜的進程操作。