在网络连接上在 OS X 10.6 中运行脚本。(如 /etc/network/if-up.d/)

在网络连接上在 OS X 10.6 中运行脚本。(如 /etc/network/if-up.d/)

当 Mac OS X 中出现网络接口时,有没有什么办法可以运行脚本?

我尝试将一个名为 ip-up 的脚本放入 /etc/ppp 中,但当我断开并重新连接到无线网络时它似乎没有触发。

我不希望运行 cron 作业来不断检查网络状态是否发生变化。在某些 Linux 发行版中,您可以通过将脚本放入 /etc/network/if-up.d/ 来实现此目的。Mac OS X 有类似的东西吗?

答案1

你可以尝试马可波罗或其网站上列出的类似实用程序之一。位置变换器如果你是一个简约主义者,这看起来很有希望。

答案2

launchd监视的代理和/etc/resolv.conf两个与网络相关的 .plist 文件/Library/Preferences/SystemConfiguration/似乎对我有用(在 Mac OS X 10.8.4 中):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ifup.ddns</string>

  <key>LowPriorityIO</key>
  <true/>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/Shared/bin/ddns-update.sh</string>
  </array>

  <key>WatchPaths</key>
  <array>
    <string>/etc/resolv.conf</string>
    <string>/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist</string>
    <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
  </array>

  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

我以前只使用过/etc/resolv.conf,但有些情况下这还不够。

答案3

你应该考虑使用曲柄,它允许您运行脚本来响应许多系统事件,例如网络变化、文件系统活动、应用程序启动等。

由于我找不到任何合理的文档,所以我还写了一篇关于开始使用 crankd

答案4

控制平面:“上下文敏感计算”

ControlPlane 是 MarcoPolo 的直接移植,事实上,MarcoPolo 的大部分配置仍可与 ControlPlane 配合使用,甚至更好!ControlPlane 支持运行 Snow Leopard 及更高版本的 32 位和 64 位 Intel Mac。

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

相关内容