fce_ev_script

fce_ev_script — Netatalk Filesystem Change Event 通知ヘルパー

概要

fce_ev_script [-h] [-v version] [-e event] [-i id] [-P path] [-S source] [-p pid] [-u user]

説明

fce_ev_script は、Netatalk の Filesystem Change Event (FCE) 機構用の通知ヘルパー である。afp.conf の fce notify script オプションと併用することを想定している。

afpd が FCE イベントを発行し、fce notify script が設定されている場合、afpd は設定されたスクリプトをバックグラウンドで実行し、コマンドラインオプションとしてイベントの詳細を渡す。

デフォルトでは、fce_ev_script は netatalk-fce というタグを付けてイベントを syslog に書き込む。NETATALK_FCE_LOG_FILE 環境変数が設定されている場合は、代わりにそのファイルへイベントを追記する。

注記: このユーティリティーを使用するには、FCE サポートを有効にして netatalk をビルド する必要がある(デフォルトで有効な -Dwith-fce=true Meson ビルドオプション)。

オプション

-h : ヘルプテキストを表示して終了する。

-v version : FCE スクリプト引数のバージョン。

-e event : FCE_FILE_CREATE などの FCE イベント名。

-i id : FCE イベント ID。

-P path : イベントのパス。

-S source : 移動または名前変更イベントの移動元パス。

-p pid : イベントを発行した afpd プロセスのプロセス ID。

-u user : イベントを発行した AFP セッションユーザー。

環境

NETATALK_FCE_LOG_FILE : syslog ではなく、このファイルにイベント行を追記する。このファイルは、イベントを発生させる 可能性のある AFP セッションユーザーが書き込み可能でなければならない。

NETATALK_FCE_LOGGER : NETATALK_FCE_LOG_FILE が設定されていない場合に使用する logger コマンド。デフォルトは logger。

NETATALK_FCE_LOG_TAG : NETATALK_FCE_LOG_FILE が設定されていない場合に使用する syslog タグ。デフォルトは netatalk-fce。

実行コンテキスト

afpd は設定された通知スクリプトを AFP セッションユーザーとして実行する。 root や Netatalk を起動したユーザーとして実行されるとは限らない。

設定したスクリプトのパスはそのユーザーが実行可能でなければならず、パス内のすべての親ディレクトリーはそのユーザーが検索可能でなければならない。NETATALK_FCE_LOG_FILE によるファイルログが有効な場合、ログファイルもそのユーザーが書き込み可能でなければならない。

例

各 FCE イベントでインストール済みのヘルパーを実行するよう afpd を設定する:

[Global]
fce notify script = /usr/local/libexec/netatalk/fce_ev_script
fce version = 2
fce events = fmod,fdel,ddel,fcre,dcre,fmov,dmov,login,logout

インストール環境で設定された libexec ディレクトリーで /usr/local/libexec を置き換える。

診断用のファイルログを取得するために、ヘルパーをラップして NETATALK_FCE_LOG_FILE を設定する:

#!/bin/sh
NETATALK_FCE_LOG_FILE=/tmp/fce.log
export NETATALK_FCE_LOG_FILE
exec /usr/local/libexec/netatalk/fce_ev_script "$@"

関連項目

afpd(8), afp.conf(5), fce_listen(1)