DHCP クライアントを設定すれば、実行可能なプログラムやスクリプト (イベントスクリプトと呼ばれる) を実行して、クライアントシステムに必要な任意のアクションを行うことができます。特定の DHCP リースイベントが発生すると、プログラムまたはスクリプトが自動的に実行されます。イベントスクリプトを使用すると、特定のリースイベントに応じてほかのコマンド、プログラム、またはスクリプトを実行できます。この機能を使用するためには、独自のイベントスクリプトを作成する必要があります。
次の表に示すイベントキーワードは、DHCP リースイベントを表すために dhcpagent によって使用されます。
|
これらのイベントが発生するたびに、dhcpagent は次のコマンドを呼び出します。
/etc/dhcp/eventhook interface event
ここで interface は DHCP を使用しているインタフェースを、event は前述のイベントキーワードの 1 つをそれぞれ表します。たとえば、最初にインタフェースを DHCP 用に構成するときに、dhcpagent は、イベントスクリプトを次のように呼び出します。
/etc/dhcp/eventhook net0 BOUND
イベントスクリプト機能を使用するためには、次のことを行う必要があります。
実行可能ファイルに /etc/dhcp/eventhook という名前を付けます。
ファイルの所有者を root にする。
アクセス権限を 755 (rwxr-xr-x) にします。
前述のイベントに応えて一連のアクションを行うスクリプトまたはプログラムを記述します。
将来新しいイベントが追加される可能性があるため、プログラムは、認識されないイベントやアクションを必要としないイベントについては何もせずに無視する必要があります。たとえば、このプログラムまたはスクリプトでは、イベントが RELEASE の場合はログファイルに書き込み、それ以外のイベントは無視します。
スクリプトやプログラムを非対話型にします。イベントスクリプトが呼び出される前に、stdin、stdout、および stderr は /dev/null に接続されます。出力またはエラーを見るためには、ファイルにリダイレクトする必要があります。
イベントスクリプトは、そのプログラム環境を dhcpagent から継承し、root 特権で実行します。スクリプトでは必要に応じて dhcpinfo ユーティリティーを使用して、より詳しいインタフェースの情報を取得できます。詳細は、dhcpinfo(1) のマニュアルページを参照してください。
dhcpagent デーモンは、イベントスクリプトがすべてのイベントに対して終了するまで待ちます。55 秒たってもイベントスクリプトが終了しないと、dhcpagent は SIGTERM シグナルをスクリプトプロセスに送信します。さらに、追加の 3 秒が過ぎてもプロセスが終了しないと、デーモンは SIGKILL シグナルを送信してプロセスを強制的に終了させます。
dhcpagent(1M) のマニュアルページにイベントスクリプトの一例が示されています。