#!D:/Perl/bin/perl.exe # サーバー稼動監視チェックPerlスクリプトその2(Windowsサーバー専用BASP21版) # BASPsvrchk2.pl 2002.08.21 作成:鷹の巣 http://sakaguch.com/ # BASP21.DLLの入手先は、http://www.hi-ho.ne.jp/babaq/basp21.html # 参考Webは、BASP21ソケットオブジェクト # http://www.hi-ho.ne.jp/babaq/basp21s.html # http://doppo.no-ip.com/j-serv/s_check/s_check.htm #■□■ WWWサーバーの設定 ■□■ $url = 'http://example.com/'; # 実在する例示用ドメイン名 $timeout = 60; # 接続許容時間(秒) #■□■ WWWサーバーの設定終わり ■□■ use Win32::OLE; # OLEパッケージの使用 &main(); exit; sub main{ if (&servercheck($url,$timeout)) { print "OK\n";} else { print "NG\n";} } sub servercheck { my ($url,$timeout) = @_; # 引数の確保 $url =~ /(http:)?(\/\/)?([^:\/]*)?(:([0-9]+))?(\/.*)?/; # 引数0:URI、引数1:HTTPプロトコルのバージョン my $host = $3; if ($host eq "") {$host = 'localhost';} my $port = $5; if ($port eq "") {$port = 80;} # HTTPプロトコルgetservbyname('http','tcp')は80。 my $BSOCKET = Win32::OLE -> new('basp21.socket'); # Basp21オブジェクトの作成と変数の確保 my $$flag_result = 0; # 戻り値を「偽」に初期化。 if ($BSOCKET -> Connect($host,$port,$timeout)) { return($flag_result); } # 接続する。戻り値0で接続OK。 if ($BSOCKET -> Write("OPTIONS * HTTP/1.0\r\n\r\n")) { return($flag_result); } # OPTIONSメソッドを投げる。戻り値0で送信OK。 $data = $BSOCKET -> Read2(0); # 応答伝文を読む。 # print "Data=$data\n"; # 正常時は、HTTP/1.1 200 OK...等を表示。(確認用) if ($BSOCKET -> Result) { return($flag_result); } # 応答結果を判断。戻り値0で受信OK。 $BSOCKET -> Close; # 接続を切断します。 # if($res =~ /^HTTP\//){ $flag_res = 1; } # 応答結果が「HTTP」で始まる場合、OKとする。 $flag_result = 1; # ここで、サブルーチン戻り値を「真」にする。 return($flag_result); # 戻り値を「真」で終了。 }