Zxa*_*aos 18 networking automation shell-script macos
当 Mac OS X 中出现网络接口时,有没有办法运行脚本?
我试过在 /etc/ppp 中放置一个名为 ip-up 的脚本,但是当我断开连接并重新连接到无线网络时它似乎没有启动。
我宁愿不必运行 cron 作业来不断检查网络状态是否已更改。在某些 linux 发行版中,您可以通过在 /etc/network/if-up.d/ 中放置一个脚本来完成此操作。Mac OS X 有类似的东西吗?
miv*_*ivk 20
一个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>
Run Code Online (Sandbox Code Playgroud)
我以前只使用过/etc/resolv.conf
,但有些情况下这还不够。
小智 5
这似乎在 bash 中有效:
(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
scutil | \
awk '/notification/ {system("echo change")}'
Run Code Online (Sandbox Code Playgroud)
替换echo change
为您的命令,请记住,如果您需要在命令中引用任何内容,则需要使用'\''
:
(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
scutil | \
awk '/notification/ {system("echo '\''&'\''")}'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15689 次 |
最近记录: |