Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15210155
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: BSD

2008-05-05 08:29:07

緣起

  • 2002.03.27 苗栗縣教育網路中心召開全縣各級學校網管人員工作會議,會中提及:
    • 網頁代管申請及簡要說明
    • 本縣三月份教育部資料,全縣140點連通率為97%,但www(80)埠連通率僅為80%,本中心將針對各校網頁不通問題,專人追蹤並於網頁上公佈連通情形
  • 2002.05.09 苗栗縣網中心的討論版上:
    網頁代管,也是很多學校的反應,考量全縣小型學校太多,教職員工異動頻繁,為了網站永續經營,局裡在課長局長大力支持下,購置硬體設備予各校擺放空間,這是最便利的方式,大家都沒參與過教育部的相關會議,所以不是很清楚,每年年終的檢討成效評比後再給次年的補助,您說能大概大概嗎?不做些成果影響的還是全縣的補助,事實就是如此。
    所以資訊的推動,除了仰賴大家過去現在的努力,也希望未來各位能帶領學科的級任、科任同仁,一起推動資訊融入學科的教學與應用,這是未來的重點中的重點。


構想

  • 於縣網中心建立各校虛擬網站。
  • 縣網中心之原構想是:此虛擬網站正常時,全縣各級學校的網頁連通率就是100%;否則,全縣的連通率就是零。
  • 原則上,此虛擬網站會先以CGI偵測學校的線路是否正常;否則顯示一則網站維修的訊息。
  • 線路正常者,再以CGI偵測實際主機的 port 80 是否正常;否則仍顯示一則網站維修的訊息。
  • 完全正常者,CGI程式便帶領操作者的瀏覽器自動轉向該校實際的網站去。

實驗站台

  • ,感謝熱情提供主機名稱做為試驗。
  • ,嗯!DNS有點問題,有時候會連不上。
  • 已開機,WEB沒有啟動
  • 常常沒開機


虛擬站台網頁內容





苗栗縣大湖鄉大南國民小學






由虛擬站台偵測各校網路線路正常否的 CGI

#!/usr/bin/sperl5

# 接收傳遞過來的參數
# 將輸入的參數 one by one 取出來
$| = 1;  #flush on

if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} elsif ($ENV{'REQUEST_METHOD'} eq "GET") {
        $buffer=$ENV{'QUERY_STRING'};
  }

@pairs = split(/&/, $buffer);

foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pair);

    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s///g;

    $A_hash{$name} = $value;
}

$server=$A_hash{"server"};
$school=$A_hash{"school"};
$addr=$A_hash{"addr"};
$tel=$A_hash{"tel"};
$fax=$A_hash{"fax"};

# 檢查主機網路是否正常
use Net::Ping ;
$p=Net::Ping->new("icmp",1) ;
$chk_server = $p->ping($server) ;

if ( $chk_server ) { # 如果線路檢查正常,進而以此網頁再去檢查 port 80
   print qq~
   
   
   
   
   
   
   
   
   ~;

} else { # 線路檢查結果不通,顯示網站維修的訊息。
   do "under_construction.pl";
}

$p->close() ;


由虛擬站台偵測各校主機 port 80 的 CGI

#!/usr/bin/perl

#接收命令行輸入
# 將輸入的參數 one by one 取出來
$| = 1;  #flush on

if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} elsif ($ENV{'REQUEST_METHOD'} eq "GET") {
        $buffer=$ENV{'QUERY_STRING'};
  }

@pairs = split(/&/, $buffer);

foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pair);

    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s///g;

    $A_hash{$name} = $value;
}

$server=$A_hash{"server"};
$school=$A_hash{"school"};
$addr=$A_hash{"addr"};
$tel=$A_hash{"tel"};
$fax=$A_hash{"fax"};

use IO::Socket;
my ($line, $port, $sock, @servers);

#掃描通訊埠
$port = 80 ;

# 開始掃描 port 80
$sock = IO::Socket::INET->new(
   PeerAddr => $server,
   PeerPort => $port,
   Proto => 'tcp');

if ($sock)  { # 如果 port 80 正常,整個網站轉址過去
	print qq~
	
	
	
	
	
	
	線路檢查正常,網站轉換中,請稍候......
	
	
	~;

} else { # port 80 不通時,顯示施工中的訊息
   do "under_construction.pl";

} 


網站維修通告的樣板網頁

,此頁的資料、圖片,均抓取自網路上的資源。
阅读(1124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~