macOS Sierra: el volumen de montaje AppleScript sigue pidiendo inicio de sesión

12

Para varias versiones de OS X que he usado:

/usr/bin/osascript -e mount volume "smb://yourserver" as user name  "yourusername" with password yourpassword

Esto ha funcionado muy bien, un montaje agradable y silencioso de la red compartida, si está disponible, por supuesto.

Recientemente instalé macOS Sierra (10.12 beta pública, compilación 16A238m), y el script aún funciona, sin embargo, ahora de repente siempre mostrará un diálogo de inicio de sesión, rellenado previamente con los valores "yourusername" y "yourpassword". El usuario aún tendrá que hacer clic en "Conectar" para montar el recurso compartido.

¿Alguien sabe si esto es un "error" en la versión beta (lo informé con la aplicación de comentarios de Apple), o es esto esperado y / o cuál sería la "solución" para eso?

Consulte también: Documentación de AppleScript "volumen de montaje"

Hanzaplastique
fuente
3
Podría estar relacionado con el hecho de que Apple ha bloqueado la /Volumescarpeta donde el recurso compartido de red está montado solo para acceso raíz, lo que requiere la autorización del usuario para crear el punto de montaje. Desafortunadamente, no sé una solución alternativa en este momento, aunque voy a jugar modificando sudoers en la computadora. Tengo un radar abierto en openradar.appspot.com/radar?id=4948585099558912 cuando Apple ha confirmado que está bloqueado.
mattdwen

Respuestas:

14

Como Apple respondió al ticket al que se hace referencia en el enlace de Radar Abierto de mattdwen anterior, a partir de macOS Sierra 10.12,

ya no puede crear elementos en / Volumes a menos que sea root.

Además, mi mejor comprensión del comando de volumen de montaje de AppleScript es que no tiene una forma de especificar el punto de montaje y, en consecuencia, solo monta volúmenes bajo /Volumesel mecanismo estándar del Finder. Por lo tanto, no creo que pueda hacerlo a través de AppleScript.

Pero hay otra forma. Puede lograr lo mismo con el mountcomando de nivel inferior :

mkdir -p ~/mnt
mount_smbfs "//my_username:my_password@my_hostname/share" ~/mnt

Después de montar el volumen de esta manera, debería ver un icono de "volumen" normal en su escritorio y el ~/mntdirectorio aparecerá como "compartir" cuando explore su directorio de usuario a través del Finder.

Lo único que falta en este enfoque es guardar las credenciales de inicio de sesión en Keychain. Para hacer eso, tienes que hacer un poco más de secuencias de comandos. Algo como esto.

Guarda la contraseña:

security add-generic-password -a my_username -s my_hostname -w my_password

Recupere la contraseña y monte el recurso compartido:

pass=$(security find-generic-password -a my_username -s my_hostname -w)
mount_smbfs "//my_username:${pass}@my_hostname/share" ~/mnt

NOTA: Si tiene caracteres especiales en su contraseña, probablemente necesitará codificarla en URL, tal vez así:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password
mnewt
fuente
Gracias mnewt y mattdwen! ¡Esto debería ser un buen trabajo! (y posiblemente mejor que usar AppleScript)
Hanzaplastique
44
presumiblemente este enfoque rompería cualquier cosa que haga referencia a archivos /Volumes/share?
Jack
Definitivamente rompería algo así.
Br.Bill
3

Apple ha solucionado esto en macOS Sierra 10.12.2:

https://support.apple.com/en-us/HT207112

Jan Dubois
fuente
Hay un error tipográfico en su ejemplo "deshacer". La forma correcta de "deshacer" sería: sudo defaults delete /Library/Preferences/com.apple.NetworkAuthorization AllowUnknownServers(eliminó la "escritura" en esa línea).
Hanzaplastique