当 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。