Ostateczne obejście ciągłego dzielenia się Wi-Fi w MacosX
Znalazłem system, który w końcu działa, a kiedy rzadziej przerywa się udostępnianie Wi-Fi, udaje mu się odzyskać go automatycznie w ciągu minuty.
Rozwiązaniem jest ~/Library/LaunchAgents/com.me.wifisharingup.plist
demon z następną zawartością:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.juanfal.wifisharingup</string>
<key>ProgramArguments</key>
<array>
<string>/Users/mi/bin/wifisharingup.sh</string>
</array>
<key>Nice</key>
<integer>1</integer>
<key>StartInterval</key>
<integer>60</integer>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/me/Library/Logs/wifisharingup.err</string>
<key>StandardOutPath</key>
<string>/Users/me/Library/Logs/wifisharingup.out</string>
</dict>
</plist>
Jak widzisz, co minutę uruchamia prosty skrypt, który następuje. Uważaj, aby poprzedni plist był własnością roota i uruchom go za pomocą:
sudo chown root com.me.wifisharingup.plist
sudo launchctl load /Users/me/Library/LaunchAgents/com.me.wifisharingup.plist
Skrypt uruchamiany co minutę (nie zapomnij, aby był wykonywalny) to:
#!/bin/sh
if [[ ! `ipconfig getifaddr en1` ]]; then
/usr/sbin/networksetup -setairportpower en1 off
/usr/sbin/networksetup -setairportpower en1 on
echo `date` >> "/Users/me/Library/Logs/wifisharingup.err"
else
touch "/Users/me/Library/Logs/wifisharingup.out"
fi
Myślę, że proste okresowe (co minutę) wywołanie, aby ipconfig getifaddr en1
odświeżyć coś w czym jest demon udostępniania Wi-Fi. Cokolwiek to jest, za każdym razem, gdy dzielenie się Wi-Fi nie powiedzie się, traci przydzielony sobie adres IP, a następnie ipconfig getifaddr en1
kończy się niepowodzeniem, więc mój skrypt całkowicie resetuje Wi-Fi, powodując, że odbudowuje swój poprzedni status i odzyskuje współdzielenie Wi-Fi.
Dotychczas pracował przez wiele dni w MacMini bez klawiatury, myszy i monitora, ale podłączono go tylko do sieci Ethernet i umożliwiając moim gadżetom Wi-Fi dostęp do świata.