Mac OS Xで使って便利な「PlistBuddy」

海上忍
2011-01-05 16:37:22
  • このエントリーをはてなブックマークに追加

 IPネットワーク上のノードを自動検出する「Bonjour」は、もはやOS Xの不可分な機能と言っていい。システム環境設定上にスイッチはなく、常に有効な状態だ。IPアドレスの直接指定や/etc/hostsにホスト名を登録する、といった儀式なしにほかのノードと通信できることは、多くのユーザーが歓迎するところだろう。

 しかし、なにかを共有に設定していれば、LANに接続していることがほかのMacからすぐに確認できてしまうのは困りもの。都合が悪いときは隠れていたい、そんなときもあるだろう。

 この問題は、マルチキャストDNSを担うサービス「mDNSResponder」の設定ファイル(/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist)に「-NoMulticastAdvertisements」なるオプションを加えることで解決できる。しかし、Finder上から/System/Library以下の領域に変更を加えるには管理者権限が必要で、plistファイルはUTF-8エンコードということもあり、おいそれとは編集できない。

 そんなときはコマンド「PlistBuddy」が便利だ。mDNSResponderの場合、以下の要領でコマンドを実行すれば、テキストエディタもProperty List Editorもなしに、オプションを追加できる。

$ sudo /usr/libexec/PlistBuddy -c "Add :ProgramArguments: string '-NoMulticastAdvertisements'" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

 ちなみに、設定を有効にするには、mDNSResponderの再起動が必要。システムを再起動してもいいが、以下のとおりlaunchctlコマンドで処理するほうがスマートだ。

$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
$ sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

 追加したオプションを削除する場合には、Property List Editorなどで「-NoMulticastAdvertisement」オプションの登録位置(システムデフォルトでは「ProgramArguments」キーにアイテム番号「2」として登録されているはず)を確認したあとで、以下のとおりコマンドを実行しよう。追加したときと同様に、launchctlコマンドでmDNSResponderを再起動すれば、Bonjourは元通りに機能する。

$ sudo /usr/libexec/PlistBuddy -c "Delete :ProgramArguments:2" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
「com.apple.mDNSResponder.plist」を表示したところ Property List Editorで「com.apple.mDNSResponder.plist」を表示したところ。PlistBuddyで追加したオプションを確認できる ※クリックすると拡大します
  • 新着記事
  • 特集
  • ブログ