Окончательный обходной путь к постоянному разделению Wi-Fi в MacosX
Я нашел систему, которая, наконец, работает, и когда реже работает общий доступ к Wi-Fi, ему удается восстановить ее автоматически за минуту.
Решение - это ~/Library/LaunchAgents/com.me.wifisharingup.plist
демон со следующим содержимым:
<?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>
Как видите, каждую минуту запускается простой скрипт, который следует. Будьте осторожны, чтобы предыдущий plist принадлежал пользователю root и запустите его:
sudo chown root com.me.wifisharingup.plist
sudo launchctl load /Users/me/Library/LaunchAgents/com.me.wifisharingup.plist
Сценарий, который он запускает каждую минуту (не забудьте сделать его исполняемым):
#!/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
Я думаю, что простой периодический (каждую минуту) вызов ipconfig getifaddr en1
обновляет что-то в том, что является демоном общего доступа Wi-Fi. Что бы это ни было, в любой момент, когда общий доступ к Wi-Fi завершается неудачно, он теряет сам назначенный IP-адрес, а затем ipconfig getifaddr en1
отказывает, поэтому мой сценарий полностью сбрасывает Wi-Fi, восстанавливая его прежнее состояние и восстанавливая общий доступ к Wi-Fi.
До сих пор он работал уже несколько дней в MacMini без клавиатуры, мыши или монитора, но только подключен к Ethernet и дает моим гаджетам wifi доступ к миру.