人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

こんばんは

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

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

●質問者: pcing
●カテゴリ:インターネット ウェブ制作
✍キーワード:CGI FTP Linux PHP サイト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● toohigh
●27ポイント

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

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


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

◎質問者からの返答

おはようございます。

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

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

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

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

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


2 ● furutanian
●27ポイント

以下のスクリプトを「/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 の種類などの情報を展開すると、また誰かが相談に乗ってくれるかもしれません。ご参考までに。

◎質問者からの返答

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

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

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

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

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

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

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

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

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


3 ● furutanian
●26ポイント ベストアンサー

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

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

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

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

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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ