2006-12-31

notifiedexecd

以前 Mac OS X 上で configd を使って ntpd の再起動をしてみる という記事を書いた。

この記事は configd の Kicker bundle の中にあるファイルを直接書き替えるもので、まぁ、ちょっと裏技っぽい。ということで最後の方で

本当は自前で configd のための Bundle を用意するかconfigd の Kicker.bundle でポストするように設定されている com.apple.system.config.network_change なる Notification を受け取る daemon を書くのがいいんだろうけど、そこまでやる気力もプログラミング力もないなぁ。
なんて書いた。

Google Analytics のアクセス解析を見ると 'configd' で検索してここにたどり着く人がそれなりいるようなので、それではといい加減なプログラムを書いてみた。それが notifiedexecd(ソースここちら。RCS なんてディレクトリもおまけに入っているけど気にしない^^;))。

お断り: このプログラムについては動作保証もないし、このプログラムをビルドあるいは実行することによってどんな損害があったとしてもこちらは責任を取りません。分かる人だけ試してください。


XXXXX: 自分で試してみたら、どうも notification を受け取れなくてうまく動かないみたい。自前のプログラムで post したものはちゃんと受け取れるんだけど、なんでかなぁ。(2007/01/01)


使い方は README.txt を読めば分かるけど、書式的には
notifiedexecd [-d] notification command to be executed
と簡単。

'-d' を付けるとデバッグモード(というか単にフォアグランドで動作する)、付けなければ daemon(3) を使ってバックグランドで動作する。

notification には、受け取るべき Notification の名前を、command to be executed には、Notification を受け取ったときに動かしたいプログラムとその引数を指定する。前の ntpd をリスタートする例だと
# notifiedexecd com.apple.system.config.network_change /usr/local/bin/restart-ntpd
または
# notifiedexecd com.apple.system.config.network_change /System/Library/StartupItems/NetworkTime/NetworkTime restart
でいいはず(試してないのか>自分)。

プログラムの配布・改変は自由で、どちらかというと誰かにもっとちゃんとしたものを書いて欲しいな。

No comments: