Solução definitiva para a constante quebra de compartilhamento de Wi-Fi no MacosX
Eu encontrei um sistema que finalmente funciona e, quando, com menos frequência, o compartilhamento de wifi é interrompido, ele consegue recuperá-lo automaticamente em um minuto.
A solução é um ~/Library/LaunchAgents/com.me.wifisharingup.plist
daemon com o próximo conteúdo:
<?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>
Você pode ver, a cada minuto, ele executa o script simples a seguir. Tenha cuidado para que o plist anterior seja de propriedade da raiz e inicie-o com:
sudo chown root com.me.wifisharingup.plist
sudo launchctl load /Users/me/Library/LaunchAgents/com.me.wifisharingup.plist
O script que ele lança a cada minuto (não se esqueça de torná-lo executável) é:
#!/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
Acho que a simples chamada periódica (a cada minuto) ipconfig getifaddr en1
atualiza algo no que é o daemon de compartilhamento wifi. Seja o que for, a qualquer momento que o compartilhamento wifi falhe, ele perde o endereço IP auto-atribuído e, em seguida,ipconfig getifaddr en1
falha, então meu script redefine totalmente o wifi, fazendo com que ele reconstrua seu status anterior e recupere o compartilhamento wifi.
Ele está trabalhando há dias até agora dentro de um MacMini sem teclado, mouse ou monitor, mas apenas conectado à Ethernet e dando aos meus aparelhos wifi acesso ao mundo.