Solución definitiva a la constante de compartir wifi en MacosX
He encontrado un sistema que finalmente funciona y cuando, con menos frecuencia, se comparte el wifi, se recupera automáticamente en un minuto.
La solución es un daemon ~/Library/LaunchAgents/com.me.wifisharingup.plist
con el siguiente contenido:
<?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>
Puedes ver, a cada minuto que ejecuta el script simple que sigue. Tenga cuidado al hacer que la lista anterior sea propiedad de la raíz y ejecútela con:
sudo chown root com.me.wifisharingup.plist
sudo launchctl load /Users/me/Library/LaunchAgents/com.me.wifisharingup.plist
El script que se inicia cada minuto (no olvide hacerlo ejecutable) es:
#!/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
Creo que la simple llamada periódica (cada minuto) a ipconfig getifaddr en1
refresca algo en lo que es el demonio que comparte wifi. Sea lo que sea, en cualquier momento que falle la conexión wifi, pierde la dirección IP auto asignada y, a continuación, ipconfig getifaddr en1
falla, por lo que mi secuencia de comandos restablece totalmente la conexión wifi, lo que le permite reconstruir su estado anterior y recuperar la conexión wifi.
Ha estado trabajando durante varios días dentro de un MacMini sin teclado, mouse o monitor, pero solo se enchufó a Ethernet y me dio acceso al mundo a mis dispositivos wifi.