macOS Sierra: el volumen de montaje de AppleScript sigue solicitando iniciar sesión

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 del recurso compartido de red, si está disponible, por supuesto.

Ahora, 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 cuadro de diálogo de inicio de sesión, completado previamente con los valores "tunombre de usuario" y "tucontraseña". El usuario aún tendrá que hacer clic en "Conectar" para montar el recurso compartido.

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

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

Podría estar relacionado con el hecho de que Apple bloqueó la /Volumescarpeta donde está montado el recurso compartido de red solo para acceder a la raíz, lo que requiere la autorización del usuario para crear el punto de montaje. Desafortunadamente, no conozco una solución en este momento, aunque voy a jugar modificando sudoers en la computadora. Tengo un Open Radar en openradar.appspot.com/radar?id=4948585099558912 donde Apple ha confirmado que está bloqueado.
También puede montarlo directamente con openy dando el nombre de usuario y la contraseña en la URL. Ver "método 2" en mi otra respuesta aquí

Respuestas (2)

Como Apple respondió al ticket al que se hace referencia en el enlace Open Radar 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 a /Volumestravés del mecanismo estándar del Finder. Entonces, no creo que puedas hacerlo a través de AppleScript.

Pero hay otra manera. Puede lograr lo mismo usando 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 de Finder.

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

Guarde 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 como URL, tal vez así:

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

Esto ha sido solucionado por Apple en macOS Sierra 10.12.2:

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

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