Así que en el espíritu de esta pregunta Me preguntaba si es posible desactivar la conexión automática 802.1X también a través del terminal. ¿Estoy en lo cierto al suponer que se trata de una configuración del ordenador (lo que significa que si ejecuto este script sin que ningún usuario haya iniciado la sesión, lo sigue desactivando para todos los usuarios existentes y futuros)?
Respuestas
¿Demasiados anuncios?Me llevó algunas horas aprender que se trata de un valor booleano (y no sólo 0 o 1 como informaría 'por defecto') pero finalmente llegué a lo siguiente LoginHook que hace el truco. Como los LoginHooks se ejecutan ejecutan como usuario Root, tienes que 'su' al usuario que está actualmente conectado antes de ejecutar el script a continuación. Como Michele señala a continuación, ese nombre de usuario está disponible como $1 para el Hook-script que se ejecuta como Root. Parece ser un usuario byHost-Setting, aunque SystemPrefs pediría una contraseña de administrador para ajustar esta configuración... Mi hook script que se ejecuta en contexto de usuario tiene el siguiente aspecto:
#!/bin/sh
if [ `whoami` = "root" ]; then
echo "$0: Must run as regular user, not root! QUIT."
exit 1
fi
# write new setting
defaults write -currentHost com.apple.network.eapolcontrol EthernetAutoConnect -bool false
Usando opensnoop(1) o fs_usage(1) no pude ver ningún otro archivo siendo modificado. Espero que esto ayude.
Esto es lo que implementamos en el trabajo. Se ejecuta como un login script para cada usuario que entra en el ordenador. Desde OS X 10.9, la ubicación ha cambiado y el nombre del archivo es diferente para cada usuario. El script busca el archivo único para ese usuario y cambia el valor de conexión automática.
#!/bin/bash
### Variables
user=`/usr/bin/logname`
x=$(find ~/Library/Preferences/ByHost -name "com.apple.network.eapolcontrol*.plist")
### Functions
defaults write $x EthernetAutoConnect -bool false
No sé cómo puede funcionar esta solución, ya que un LoginHook se ejecuta como root
y no como el propio usuario.
Aquí mi solución:
#! /bin/sh
su - $1 -c "defaults -currentHost write com.apple.network.eapolcontrol EthernetAutoConnect -bool false";
Tenga en cuenta que la opción -currentHost
hará las cosas con el uuid del host ;-)
Salud, Michele