こんばんは


レンタルサーバー(Linuxサーバー)に保存される
サイト内検索CGIの「検索履歴ファイル」を定期的に自動でメールで送信することのできる機能のあるCGIを探しています。
ちなみに、Cronなどは使用不可です。
可能な限り、CGI、PHP、FTPなどを駆使して実現したいのですがどなたか
そのようなスクリプトをご存知の方はいらっしゃいませんでしょうか?

よろしくお願いいたします

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2006/10/26 02:53:10
  • 終了:2006/10/31 00:04:24

ベストアンサー

id:furutanian No.3

furutanian回答回数112ベストアンサー獲得回数142006/10/26 19:46:05

ポイント26pt

うまくいったようで、なによりです。

ログをクリアしたいなら、以下のように追加変更しましょう。抜けが生じません(メールの送信エラーまでは考慮してませんが)。

rename 'ABCDEFG.log', 'ABCDEFG.log.send';
open LOG, 'ABCDEFG.log.send';

先にコメントしましたが、セキュリティにはご注意あれ。

http://www.yahoo.co.jp/

id:pcing

非常に参考になりました。ありがとうございました。

100%ではないかもしれませんが

.htaccessを入れてあるので、とりあえず大丈夫かな?と思っています。

2006/10/26 20:26:52

その他の回答(2件)

id:toohigh No.1

toohigh回答回数291ベストアンサー獲得回数372006/10/26 07:26:09

ポイント27pt

お使いの「サイト内検索CGI」の動作によって実現方法が変わるので、質問者さんのニーズにきっちりと合う単品のスクリプトは出てこないのでは、と思います。

とりあえず、使えそうな方法だけを書いてみますと、こんな感じでしょうか。正確に定期的にはなりませんが・・。

  • 検索CGI に以下の機能を追加する
    • メールで履歴ファイルを送信する機能
    • メール送信の機能を最後に実行した時刻をファイルのタイムスタンプなどの形でメモっておく機能
    • メール送信機能を実際に発動する条件として「最後のメール送信実行から現在の時刻までの間が24時間以上経っていること」を確認する機能
  • 上記の機能をサイトのトップページ(・・がPHPなどで作成されている場合)に追加する
  • どっちも変更したくない場合は、同様の機能 + 適当な gif イメージなどを返す CGI を作って、トップページで IMG タグを使って呼ばせる

http://q.hatena.ne.jp/

id:pcing

おはようございます。

具体的には、「MyWebSearch Ver.1.22」を使っていて、ABCDEFG.log(仮名)というLOGを常時吐き出しています。

このLogファイルをメールで送信することのできるスクリプトがあれば理想なのですが

なかなか見つかりそうもないですね。

自動的に24時に送信するのではなく、送信CGIにアクセスして要求したときにLOGファイルを送ってくるスクリプトでも助かるのですが、ご存知ないでしょうか?

よろしくお願いいたします

2006/10/26 08:15:34
id:furutanian No.2

furutanian回答回数112ベストアンサー獲得回数142006/10/26 17:53:04

ポイント27pt

以下のスクリプトを「/home/user/public_html/cgi-bin/logsend.cgi」とかに設置して「http://www.provider.com/~user/cgi-bin/logsend.cgi」にアクセスすれば、それだけで「ABCDEFG.log」の内容をメールで飛ばすことができます。以下を参考にしました。

http://www.stackasterisk.jp/tech/program/perl03_03.jsp

#!/usr/bin/perl

$from = 'servname@from.domain.com';
$to   = 'yourname@rcpt.domain.com';

open  MAIL, "| /usr/sbin/sendmail -f $from -t $to";
print MAIL "From: $from\n";
print MAIL "Subject: Search history log.\n";
print MAIL "To: $to\n\n";

open  LOG, 'ABCDEFG.log';
print MAIL $_ while(<LOG>);
close LOG;

print MAIL ".\n";
close MAIL;

print "Content-Type: text/html; charset=UTF-8\n\n";
print "The log has been sent.\n";

ただ、このプログラムは日本語を考慮していませんし、添付ファイルになりませんし、誰でも「http://www.provider.com/~user/cgi-bin/logsend.cgi」にアクセスする度に、指定のアドレスにメールが飛びますので、セキュリティ面の工夫も必要です(認証が必要なディレクトリ内に設置するなど)。

不足な機能があれば、これを叩き台に、上記のサイトの記述を参考にしながら、改造するといいでしょう。なお、上記のスクリプトは動作を確認していますので、動かないとすれば環境問題である可能性が高いです。

あとは「検索履歴ファイル」について、

・常に特定のファイルを送ればいいのか?

・複数のファイルからチョイスする必要があるのか?

・概ねのファイルサイズ(バイト数)

・メール本文に挿入でいいのか、添付したいのか?

とかの情報とかを展開したり、スクリプトが動かなかったりする場合は、Linux の種類などの情報を展開すると、また誰かが相談に乗ってくれるかもしれません。ご参考までに。

id:pcing

本当に、ありがとうございます

設置してみたところ、うまくいったようです。

Logファイルの中身がもともと「%82%A0%82%A2%82%A4%82%A6%82%A8」みたいな形式になっていたのと

GoogleのGmailで受信したところ、自動的にデコードされていたので

スクリプトの日本語対応が不十分でも全く問題なく受け取れました。

今のところ、添付ファイルで受け取る必要もなく、ログも単一のLogファイル名ですのでこれで十分実用になります。

ファイルサイズは、300KB~1MB程度ですが定期的に削除しているので正確には分かりません。

送信完了後にファイルの中身を一旦クリアして0バイトに戻す機能があれば、重複が無くなるのでさらに実用度が増すと思います。

ありがとうございました。

2006/10/26 18:43:43
id:furutanian No.3

furutanian回答回数112ベストアンサー獲得回数142006/10/26 19:46:05ここでベストアンサー

ポイント26pt

うまくいったようで、なによりです。

ログをクリアしたいなら、以下のように追加変更しましょう。抜けが生じません(メールの送信エラーまでは考慮してませんが)。

rename 'ABCDEFG.log', 'ABCDEFG.log.send';
open LOG, 'ABCDEFG.log.send';

先にコメントしましたが、セキュリティにはご注意あれ。

http://www.yahoo.co.jp/

id:pcing

非常に参考になりました。ありがとうございました。

100%ではないかもしれませんが

.htaccessを入れてあるので、とりあえず大丈夫かな?と思っています。

2006/10/26 20:26:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません