第20章 NetworkManager で dispatcher スクリプトを使用して dhclient の終了フックを実行する
NetworkManager の dispatcher スクリプトを使用して、dhclient
の終了フックを実行できます。
20.1. NetworkManager の dispatcher スクリプトの概念
NetworkManager-dispatcher
サービスは、ネットワークイベントが発生した場合に、ユーザーが提供したスクリプトをアルファベット順に実行します。通常、これらのスクリプトはシェルスクリプトですが、任意の実行可能スクリプトまたはアプリケーションにすることができます。たとえば、dispatcher スクリプトを使用して、NetworkManager では管理できないネットワーク関連の設定を調整できます。
dispatcher スクリプトは、以下のディレクトリーに保存できます。
-
/etc/NetworkManager/dispatcher.d/
:root
ユーザーが編集できるディスパッチャースクリプトの全般的な場所です。 -
/usr/lib/NetworkManager/dispatcher.d/
: デプロイ済みの不変のディスパッチャースクリプト用。
セキュリティー上の理由から、NetworkManager-dispatcher
では、以下の条件が満たされた場合にのみスクリプトを実行します。
-
このスクリプトは、
root
ユーザーが所有します。 -
このスクリプトは、
root
でのみ読み取りと書き込みが可能です。 -
setuid
ビットはスクリプトに設定されていません。
NetworkManager-dispatcher
サービスは、2 つの引数を指定して、それぞれのスクリプトを実行します。
- 操作が発生したデバイスのインターフェイス名。
-
インターフェイスがアクティブになったときの動作 (
up
など)。
NetworkManager(8)
の man ページの Dispatcher scripts
セクションには、スクリプトで使用できるアクションと環境変数の概要が記載されています。
NetworkManager-dispatcher
サービスは、一度に 1 つのスクリプトを実行しますが、NetworkManager のメインプロセスとは非同期に実行します。スクリプトがキューに入れられている場合、後のイベントによってスクリプトが廃止された場合でも、サービスは常にスクリプトを実行することに注意してください。ただし、NetworkManager-dispatcher
サービスは、以前のスクリプトの終了を待たずに、/etc/NetworkManager/dispatcher.d/no-wait.d/
内のファイルを参照するシンボリックリンクであるスクリプトを即座に、そして並行して実行します。
関連情報
-
システム上の
NetworkManager(8)
man ページ