• ベストアンサー

こういうことってできるんでしょうか?

まだまだ勉強中なので、よく理解できてない点が多いんですが、PerlでCGIプログラムを組まなければいけなくなりそうなので質問させていただきます。 したいことは ●あるログファイルが一定の量を超えると、他のサーバにそのログファイルを移したい。 ●他サーバに移したログファイルは削除し、新たなログファイルを生成する です。 これをおそらく既存のCGIに埋め込む形で作ることになりそうです。 フリーで公開されているスクリプトを見ていると、ログファイルを過去ログとして保存していくことができるのはわかっています。 それを他サーバに移すことは可能なんでしょうか? また、既存のCGIでは、そのログからアクセス解析等を行っています。 他サーバに古いデータが移ってしまうと、おそらく解析結果も変わってしまうことになりますよね? 仮に上記のようなプログラムが組めるものとして、やっぱりかなり難しいプログラムになるんでしょうか?

  • CGI
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1です。 >サーバにログを移す方法ですが、まだ検討中です。 >というのも、某レンタルサーバから他のレンタルサーバに移す操作をしなくてはならないからです。 >これって可能なんでしょうか? サーバー上でどこまでの操作が可能かによりますね。 お話を読ませていただく限りではFTPで転送、といったあたりが妥当な線になるかと思います。 移す先のサーバーにFTPサーバーが動いていて、FTPのアクセス権(ユーザーIDとパスワード)があれば問題なく可能です。 ただ、スクリプトは先にも書きましたようにFTPアクセスするようなスクリプトにする必要がありますが。 >移すタイミングは可能であれば、『一定バイト数を超えたら』で行いたいんですが…可能なんでしょうか? もちろん可能です。if文のファイル検査オプションでサイズを調べることができます。確かif (-s ファイル名)だったかな・・・?調べて書いてないので、Perlのリファレンスを参照ください。 これで一定サイズを超えていれば転送ルーチンを始動してやればいいわけです。 ただ、これをCGIでやると、運悪く転送ルーチンを引いた人がCGIの終了を待たされるかもしれませんので、cron(WindowsならAT)を使用して時限起動にするのがベターです。 あと、転送する際にはログファイルのロックを忘れないようにしてください。ロックといっても、ログファイルの転送開始時に何かファイル(ロックファイル)を作り、転送が終わるとそのファイルを消す。それだけです。ログへの書き込みルーチンでは、そのロックファイルの有無をチェックして、ある場合はなくなるまで待つようにしないといけません。

nana_ko
質問者

お礼

ありがとうございます。 サーバ間の転送も移すタイミングを容量にするのも可能なんですね。 転送時にロックファイルを作る…掲示板なんかで使われているのと同じですよね。 お勉強になりました。

その他の回答 (2)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.3

技術としては、可能です。 移すタイミング、は、 cronを使うか、 誰かがログに書き込んだ時に総数を計算、 という形をとるとして、 一定量を超えた際、perlでftpポートを開いて 保存用サーバに転送して、 現ログファイルを削除すればOKです。 ただ、perlにftpモジュールが必要で、 保存用サーバがIPアドレス登録無しでFTPを開いてくれる(普通は大丈夫) というのが条件になります。 cron処理の場合、 レンタルサーバで行うのは無理(やらせてくれない)のではないかと。 解析結果が変わってしまうのは必然で、 もともとが、保存用サーバのログも一緒に読み込んで解析する、 というプログラムでもない限りは、この事態は避けられないですね。 しかし、Perlの技術が「組まなければいけなくなりそう」というレベルなのでしたら このプログラムの作成は難しいのではないかと思われます。

nana_ko
質問者

お礼

ftpモジュールがない場合はftpでの転送はできないことになるんですかね? httpを使うことはできるんでしょうか? サーバはレンタルなので…cron使うのは無理ですかねぇ、やっぱり。 んー…やっぱり組むとなると難しいですよね…もしもの場合を考えて、他の対処法も考えようと思います。 ありがとうございました。

回答No.1

難しいのは「他サーバに移す」というところですが、どのような方法で移すことをお考えですか? UNIX(Linux)サーバーで、NFS(SMB)マウントされているサーバーに移すだけなどなら、普通にファイルを移動するのと同じ事をするだけですから簡単ですよね。 FTPなどを使うと言うなら、ライブラリを使用するなどしてFTPでファイルを転送できるスクリプトを組む必要があります。 データベースサーバーに入れると言うことであれば、データベースアクセス用のスクリプトが必要です。これも探せばライブラリがあるでしょう。 以上、どの方法をお考えですか? WindowでActivePerlを使っているのであれば、FTPなどを簡単に行なうことのできるライブラリがあります(ヘルプを探してくださいね)。 ファイルの削除はunlinkでOKです。 あと、CGIでやると移動タイミングはCGIが起動された瞬間(ユーザーがCGIを動かしたとき)に限られてしまいます。これを毎晩やりたいなどと言うことでしたら、UNIX(Linux)だったらcron、Windows(NT/2000系)ならATコマンドなどで定期的にスクリプトを実行するようにする必要があります。

nana_ko
質問者

補足

早々の回答ありがとうございます。 サーバにログを移す方法ですが、まだ検討中です。 というのも、某レンタルサーバから他のレンタルサーバに移す操作をしなくてはならないからです。 これって可能なんでしょうか? 移すタイミングは可能であれば、『一定バイト数を超えたら』で行いたいんですが…可能なんでしょうか?

関連するQ&A

  • BBSのシステムに定期的に書き込みをするプログラム

    perlでプログラムを組んでいます。 今、自宅のサーバーでhttpサーバーを立てているのですが、 その中にBBSのCGIがあります。 特定の時間に他のプログラムのログを読み取り、その結果を BBSに書き込むperlのプログラムを組みたいのですが、どのようにしたら perlからcgiを動作させられるかわかりません。 今まではperl単体で完結するプログラムのみを組んでました。 どのような命令を使ったら良いのか教えて下さい

    • ベストアンサー
    • Perl
  • アクセスログ解析ソフトanalogの使い方

    ホスティングサーバーにHPを開設しています。サーバーのサービスとしてサーバー上にanalog.htmlが生成され一定期間ののログ解析結果が見られますが,生成される生logをDLして、PC上でanalogのソフトをDLしてログ解析しようとしています。 analogのHPからソフトのファイルをDLしたところまでは出来ていますが、logfile.logと名前をつけた生logを読ませても、分析されません。 HP見たのですが、analogの使い方が基本的にわからず困っています。 細かい設定はともかく、DL後、日本語でレポートが出せるには最低限何をどうしたらよいのでしょうか??

  • 高機能なアクセス解析のCGIスクリプトを探しています

    CGI-BOYのアクセス解析はとても高機能で使いやすいの ですが、広告が表示されてしまいます。 そこでフリーのCGIスクリプトを サーバーに設置しようと思うのですが (サーバーではCGIを許可しています)、 いろいろ探したのですが、CGI-BOYみたいな高機能のアクセス解析が見つかりません。 いいアクセス解析のCGIがあれば教えてください。 無料のものでお願いします。

  • iモードとCGI

    現在iモード用のCGIを作ろうと思っています。 CGIはサーバサイド・スクリプトですので、 サーバ側の環境が整っており、CGIによって生成されるHTMLファイルがiモードの仕様に合っていれば、PerlやPHPなど、どの言語を使ってもよいということでしょうか?またそれらとデータベースを連携させても問題ないということでしょうか? iモードに関してはまったく知識がありません。 基本的なことかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIわかる人、教えて下さい

    CGIのことでお聞きしたいんですが、 フリーのCGIスクリプトをカスタマイズし、 HPに載せようとしたんですが、 エラーがでます。 カウンターなのですが、そこには (NO log file)と表示されます。 アクセス権もしっかり設定したのだが、 何がおかしいんでしょう? おそらく、予想では以下の設定がわからないからと思っています。 $log_d= ".";  # ログ生成ディレクトリ(絶対・相対パスで 最後の / は省く) これは、どうゆうふうに書いたらいいのでしょう。

    • ベストアンサー
    • CGI
  • CGIの実行ができません

    はじめまして。 現在、出欠表を作るためにperlを勉強しているのですが、 フォームの作り方を勉強しようと、本を参考に掲示板のプログラムを作った(写した?)のですが、 サーバーにupしても実行できず悩んでいます。 文法はpcheck.cgiというものを使って間違いないとでており、 権限も755にしているのでできないことは無いと思いますが、 なぜか500エラーがでてしまいます。 そのソースには他に使うファイルとして、log.txtというのがあるんですが、 自動生成されるのか分からなかったので、同一ディレクトリに つくり、666にしております。 考えられる原因はあるのでしょうか? 教えていただけたら幸いです。 必要でしたら、ソースを49にupしようと思います。

    • ベストアンサー
    • Perl
  • 自作したサーバーでperlが動かない

    この度、centos5.3で自宅サーバーを組んだのですが、どうしてもある記述をしたperlのプログラムが動作しません。 他の記述方法であれば、問題なく動作します。 内容としては、htmlをOPENで読み込んで、出力させるだけの単純な物です。 なにか設定が悪いのでしょうか? なお他のサーバーでは、同じプログラムは動作します。 perlのバージョンは、5.8.8です。 記述の内容は次の通りです。 ********************************* #!/usr/local/bin/perl open(HTML, "test.html"); @log = <HTML>; close(HTML); print "Content-type: text/html\n\n"; print <<"EOF"; @log EOF exit; ********************************* エラーログには、Premature end of script headers: test.cgiとなっています。 もちろん、test.htmlファイルも存在します。 どなたかお教え頂けませんでしょうか? 宜しくお願いします。

  • スレッド式のアップローダを探しています。

    クラスメイトと、教科ごとの宿題や課題の共有できるページを作ろうと考えています。 そこで、スレッド式で画像ファイルzipファイルなどに対応したフリーのcgiスクリプトを探しています。 cgiサーバは、FTP、CGI/Perl、CGI/Python、SSI、PHP、sendmail、FollowSymLinks、.htaccessに対応しています。 良さそうなcgiスクリプトを配布されているサイトがありましたら、どうぞ教えてください。

    • ベストアンサー
    • CGI
  • なんでサーバーエラー??

    CGIをはじめて、まだまだ初心者です。 プログラムは、MS-DOSで構文チェックして、 OKとでるのに、サーバーエラーっておかしくないですか? もちろん、サーバは、自分のパソコンに アパッチいれて、Perlいれて確認するんですが、 何がエラーなんでしょう・・・? まだ、高級なCGIなど作れないので、 フリーのスクリプトをDLしてきました。 まず、構文チェックOK。 そして、Perl開いたまま、 ブラウザにアクセスします。 そうしたら、サーバーエラーとなるのです。 何を変えていったらいいのか教えて下さい。 (自分で作った簡単なアンケートフォーム とかは成功しました)

    • ベストアンサー
    • CGI
  • アクセスログを解析したいです。ソフトをインストールする方法以外でありますか?

    某社のサーバを自社に置いて、WEBを公開しています。 しかし、この某社のサーバがアクセスログを解析するソフトがなく、どの会社がどのくらい自社のホームページをアクセスしているかが見ることができません。 (アクセスログ自体は見れますが、ログそのものを見ても、ちょっと解析できません) Linux標準でインストールされるWebalizerをインストールしたくても、root権限がないので、インストールできません。 CGIプログラムでもいいので、ソフトをインストールせず、アクセスログをとる方法はありませんでしょうか? (但し、DMZにつなぐ方法、お金がかかる方法は除いてです。)

専門家に質問してみよう