답변:
에이전트 시작 /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 만 사용했지만 충분하지 않은 경우가있었습니다.
<plist version="1.0">
태그가 없습니다. [1] [ apple.stackexchange.com/a/181127/56862]
SystemConfiguration
파일 에서 정확히 무엇을 변경해야 합니까? 네트워크 케이블을 연결 / 분리하면 아무 변화도 없습니다.
/etc/resolv.conf
내 와이파이 상태 변경, 그래서 나는 확실히 그것은 단지 분리에서 실행중인 왜 안있을 때 파일을 삭제하고 다시 추가됩니다.
네트워크 변경, 파일 시스템 활동, 응용 프로그램 시작 등과 같은 많은 시스템 이벤트에 응답하여 스크립트를 정확하게 실행할 수있는 crankd 사용을 고려해야합니다 .
합리적인 문서를 찾을 수 없었기 때문에 crankd 사용을 시작하는 방법 에 대한 작은 블로그 게시물도 작성했습니다 .
이것은 bash에서 작동하는 것 같습니다.
(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
scutil | \
awk '/notification/ {system("echo change")}'
대체 echo change
당신은 당신의 명령에 아무것도 인용해야하는 경우, 사용해야한다는 점을 염두에두고, 당신의 명령 '\''
:
(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
scutil | \
awk '/notification/ {system("echo '\''&'\''")}'
시작으로 시작하십시오. 이를 사용하여 유사한 기능을 수행 할 수 있습니다.
편집 : 9 년 후, 아닐 수도 있습니다. 이 Wikipedia 항목 에 따르면 :
2014 년 OS X 10.10 및 iOS 8에서 Apple은 시작 코드를 비공개 소스 libxpc로 옮겼습니다.