Puede que estés preguntando dos cosas diferentes, pero en el último párrafo dijiste:
El objetivo final es evitar que el sistema inicie sesión automáticamente en una red
Evitar que el Sistema Inicie Sesión Automáticamente en una Red:
Creo que la forma de lograrlo es desmarcar (deshabilitar) la función Auto-Conexión
para cada nombre de red WiFi/SSID almacenado. Preferencias del Sistema
, Red
, Avanzado...
. Desmarca todas las casillas marcadas en la lista de "Redes Preferidas".
También ten en cuenta que hay un par de otras opciones aquí que pueden ser de interés:
- Puedes desmarcar la opción de "Recordar las redes a las que se ha unido esta computadora"
- Puedes marcar la casilla de "Requerir autorización de administrador para: Activar o desactivar Wi-Fi.
Para Desconectar la Energía del WiFi al Iniciar el Sistema:
Para desconectar la energía del wifi al iniciar el sistema, puedes usar cron
. Es ciertamente más simple que construir un .plist
, y se invoca al inicio en lugar de al iniciar sesión. En mis pruebas, sobrevive a una sesión, pero por supuesto podría ser "anulado" por otras configuraciones del sistema -- Su experiencia puede variar. Puede ser reiniciado desde el ícono de WiFi en la barra de menú después de iniciar sesión cuando lo desees. Así es como hacerlo desde la CLI:
crontab -e
Esto iniciará tu editor de crontab
designado, y abrirá tu actual crontab
. Si no tienes un crontab
(no lo has usado anteriormente), se te pedirá que elijas entre una de las tres opciones de editor predeterminado. Te sugiero que elijas pico
o nano
. Hecho esto, el crontab
predeterminado se abrirá en el editor de tu elección.
Una vez que el editor haya iniciado, haz la siguiente entrada en la primera línea vacía en la "parte inferior" del archivo:
@reboot /usr/sbin/networksetup -setairportpower en0 off
Guarda y cierra el editor, y tu nuevo crontab
se vuelve activo. Este comando ahora se ejecutará cada vez que tu sistema arranque, y (sujeto a la excepción mencionada) tu interfaz de WiFi estará "APAGADA" hasta que la enciendas.
0 votos
Estoy asumiendo que quieres desactivarlo al arrancar/iniciar sesión, pero aún quieres recordar las redes a las que conectarte en otro momento, ¿correcto? En ese caso, no lo ejecutes como un agente de inicio, sino como un demonio de inicio. apple.stackexchange.com/questions/249446/…
1 votos
También, intenta usar un gancho de cierre de sesión para apagar WiFi cuando el usuario apaga. El poder del WiFi es persistente entre reinicios (mi WiFi en mi iMac está predeterminado en apagado y se mantiene así en cada reinicio)
0 votos
Sí, también estaba pensando que el gancho de cierre de sesión sería una gran idea. Pero para lo primero, ¿puedo simplemente mover mi archivo .plist a
/LaunchDaemons
, y luegosudo launchctl load
¿verdad? ¿Necesitolaunchctl unload
el anterior en absoluto?1 votos
Si lo colocas en /Library/LaunchDaemons/ y te aseguras de que sea propiedad de root, entonces no necesitas
sudo
en absoluto. Y no necesitas un script de shell separado. Simplemente puedes colocar/usr/sbin/networksetup -setairportpower en0 off
en tu plist como losProgramArguments
1 votos
Si estás haciendo cambios en el plist, entonces sí, deberías descargarlo.
0 votos
También me encontré con esto... es posible que tengas que escribir una aplicación C++ para que funcione: developer.apple.com/library/archive/documentation/Darwin/…
0 votos
Encontré otro en mis viajes hoy. Esta aplicación te permite ejecutar scripts en ciertos eventos: apps.apple.com/us/app/eventscripts/id525319418?mt=12 No lo he probado, pero ofrecen una versión demo Esto podría ser lo que estás buscando y por $4USD, ¡es un precio bastante bueno también.
0 votos
@Allan. Interesante. Parece que hay más de una forma de activar eventos/scripts/loquesea. Pero supongo que ahora surge la pregunta: ¿cuál de estos ocurre primero? Podría ser interesante probar todos ellos al mismo tiempo, y de algún modo enviar la hora exacta en que se ejecuta cada uno a un archivo de registro. Puedo ver cómo esto sería fácil de integrar en el script logouthook, ¿pero podría el crontab también enviar la hora en que se ejecuta a un archivo de registro? Potencialmente relacionado: ¿cómo se mostraría esto al arrancar en modo verboso?
0 votos
@TJ Luoma. Estoy dándome cuenta ahora mismo de cómo funciona exactamente tu solución. La mía era innecesariamente complicada por un paso, el script de shell separado. He leído en algunos lugares que crontab ha sido "obsoleto" desde 10.4, y que launchd debería ser utilizado para este tipo de situaciones. ¿Tienes alguna opinión sobre uno u otro?
1 votos
Sé que a algunas personas les gusta la simplicidad de crontab, pero launchd es la mejor opción. Tienes razón en que no necesitas un script separado para esto. Si encuentras que no funciona, puede que necesite estar en LaunchDaemons en su lugar (que se ejecuta como root).
0 votos
@TJ Luoma. He agregado el código
date >> /Users/username/Desktop/launchd_datestamp.txt
alcrontab
ylogouthook
, y funcionan de manera confiable, sin embargo no puedo hacer que elLaunchDaemon
escriba un archivo en ninguna parte del disco. ¿Quizás está escribiendo correctamente el archivo pero no es persistente? He intentado en/tmp
/Users/username/...
y en otros lugares. ¿Alguna sugerencia?0 votos
Los LaunchDaemons deben ser almacenados en
/Library/LaunchDaemons/
y deben ser propiedad deroot:wheel
(sudo chown root:wheel /Library/LaunchDaemons/com.your.launchdfile.here.plist) Si eso ya está configurado, no estoy seguro de por qué no está funcionando, intente agregar StandardErrorPath y StandardOutPath al archivo plist.0 votos
Mi atención se centró en esta pregunta y respuesta porque alguien votó a favor de mi respuesta hoy. Veo que ahora tienes tu propia respuesta, y eso está bien. También observo que has cambiado bastante tu pregunta. Pasaste por varias iteraciones de tu
objetivo final
, y luego decidiste quitar elobjetivo final
de tu pregunta por completo. ¿Crees que eso es útil? No estoy diciendo que no sea útil, simplemente tengo curiosidad. Desde mi punto de vista, parece ser un objetivo en constante movimiento.0 votos
@Seamus: Supongo que el "objetivo final" cambió una vez que me di cuenta de lo que realmente estaba intentando hacer, es decir, prevenir cualquier conexión wifi, ya sea a una red conocida o no.
0 votos
Lo justo es lo justo - Apple hace cosas misteriosas de maneras misteriosas. Pero algunos pueden preguntarse si eso plantea otra pregunta. No estás bajo una cuota.