某研究室で、論文などを入れておく共有ディレクトリを作成することになった。 いろんな人がいろんなディレクトリをつくって、そこに勝手にいれていく。 いろんな人がいれていくから、 どこに何が入っているかわからないようになってしまう恐れがある。 それでは意味がない。 わけがわからなくなるのを回避するためには、 毎日どんなファイルが追加されているか わかるようにしログをとらなければならない。
サーバにはLinux+Sambaを使うことにする。 幸運なことに、Sambaを使えば、 新しく書き込まれたファイルがわかるようになる。
ということは、ログを基に、 自動的に追加ファイルをリストアップするスクリプトをつくればよい。 このスクリプトを、アクセスの少なくなる明け方に走らせれば、 朝には新しく追加されたファイルがピックアップされているという仕掛けだ。
Linux+Sambaのシステムをとにかく作り上げる。 この部分は省略。Vineでも使えば、あっというまにできあがる。
ファイル名まで書き出すようにするためにはlog levelを 2くらいにする必要がある。 levelが大きすぎると、 ハードディスクがパンクするのでやめておいた方がよい。
[global]
log level = 2
(あと色々な設定)
そうすると、
[2000/12/13 14:43:19, 2] smbd/server.c:main(716) Changed root to / [2000/12/13 14:43:19, 2] smbd/reply.c:reply_special(96) netbios connect: name1=PENVV name2=SSP220 [2000/12/13 14:43:19, 1] smbd/service.c:make_connection(521) ssp220 (172.16.2.22) connect to service yokeda as user yokeda (uid=500,gid=501) (pid 2810) [2000/12/13 14:43:27, 2] smbd/open.c:open_file(582) yokeda opened file hyouka.pdf read=No write=Yes (numopen=1) [2000/12/13 14:43:51, 2] locking/locking_shm.c:shm_del_share_mode(355) del_share_modes Deleting share mode entry dev=307 ino=32603 [2000/12/13 14:43:51, 2] locking/locking_shm.c:shm_del_share_mode(376) del_share_modes num entries = 0, deleting share_mode dev=307 ino=32603 [2000/12/13 14:43:51, 2] smbd/close.c:close_normal_file(165) yokeda closed file hyouka.pdf (numopen=0)
青い部分が味噌なので、その部分をperlか何かで見つけられるようにする。 まあ、perlが一番簡単でしょうね。 ポイントは「write=Yes」の部分でしょうか。 (ファイルアクセスの場合は「read=Yes」がポイント)
ということで、簡単なものを作ってみました。→「pickup.pl」
単純に 時間・書き込んだ人・ファイル名をピックアップするだけですので、
削除とか移動とかも考えなけりゃいけないかもしれません。
一週間毎に更新されたファイルの一覧を作りましょう。 方針は下の通り。
スクリプトの実行はcronで自動化するとして、 そのためのスクリプトを考えよう。
アクセスランキングとかもおもしろいかも。
ということで、
アクセス数をカウントするスクリプト → ranking.pl
整形は、好きなようにしてください。