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)