NAME

polling - ファイルが変化したときに指定されたコマンドを実行する


SYNOPSIS

  polling [OPTIONS] COMMAND [ARGUMENTS...]


DESCRIPTION

一定時間おきに指定されたファイルの更新時間を調べ,変化があった場合には 指定されたコマンドを実行する.コマンドが標準出力または標準エラー出力に 何らかの出力を行った場合は,メールでその結果を通知する.


OPTIONS

-f FILE
--file=FILE
指定された FILE の変化を監視する.オプションによる指定がなければ, /var/log/messages を監視対象とする.

-i SECONDS
--interval=SECONDS
ファイルの変化を検出する時間間隔を指定する.オプションによる指定がなけ れば,30 秒おきに検出を行う.

-c SECONDS
--command-interval=SECONDS
コマンドを実行する最低間隔を指定する.ファイルの変化が検出された場合で あっても,前回コマンド実行時から指定された秒数が経過していなければ,コ マンドの実行を行わない.オプションによる指定がなければ,900 秒を最低間 隔とする.

-r
--reentrant
コマンドが reentrant であることを指定する.このオプションが指定されて いると,コマンドの終了を待たずにファイルの変更日時を検出するループに戻 るため,複数のコマンドが同時に実行されることが有り得る.

-p PIDFILE
--pidfile=PIDFILE
background で動作するプロセスの PID を記録するファイル名を指定する.オ プションによる指定がなければ,/var/run/polling.pid に記録する.

-P PRIORITY
--priority=PRIORITY
background で動作するプロセスの process priority を指定する.オプショ ンによる指定がなければ,12 を用いる.

-l FACILITY
--log-facility=FACILITY
syslog(3) に記録するときに用いる facility を指定する.オプションによる 指定がなければ,local6 が用いられる.

-a ADDRESS
--address=ADDRESS
コマンドの実行結果を通知するアドレスを指定する.オプションによる指定が なければ,このスクリプトを実行したユーザーに対して通知を試みる.


USAGE

このスクリプトは,元々,dhcpd によって管理されているホストが接続された 時点で特定のコマンドを実行することを目的に作成された.

例えば,動的な IP アドレスの割り当てを受けている普通のホストであれば, アドレスが貸し出された時点で /var/state/dhcp/dhcpd.leases に記録さ れるので,このファイルをスクリプトで監視していれば,ホストが接続された 時点でコマンドを実行することができる.

ただし,MAC アドレスに基づいて静的な IP アドレスを付与しているホストの 場合は,/var/state/dhcp/dhcpd.leases が変化しないため,もう少し工夫 が必要である.

/etc/dhcpd.conf に記述されている log-facility の設定値を確認し, dhcpd の動作記録を別にするように /etc/syslog.conf に設定する.

  Example:
    # For dhcpd
    local7.info         -/var/log/dhcpd.info

この後,syslogd に対して HUP シグナルを送る.

これで,dhcpd の動作記録が /var/log/dhcpd.info に保存されるようにな るので,このファイルを監視していれば,ホストが接続された時点でコマンド を実行することができる.

作者の環境では,MTA の queue の処理をホストの接続にあわせて行うように している.


REQUIREMENT

Perl に標準的に付属しているモジュール以外に,以下の2つのモジュールが必 要である.


AUTHOR

TSUCHIYA Masatoshi <tsuchiya@namazu.org>


COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, you can either send email to this program's maintainer or write to: The Free Software Foundation, Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.

Last Update: $Date: 2002/12/02 01:35:31 $