macOS Sierra: le volume de montage AppleScript continue de demander une connexion

12

Pour plusieurs versions d'OS X que j'ai utilisées:

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

Cela a très bien fonctionné, un montage agréable et silencieux du partage réseau, s'il est disponible bien sûr.

Récemment, j'ai installé macOS Sierra (10.12 bêta publique, build 16A238m), et le script fonctionne toujours, mais il affichera soudainement toujours une boîte de dialogue de connexion, pré-remplie avec les valeurs "yourusername" et "yourpassword". L'utilisateur devra toujours cliquer sur "Connecter" pour monter le partage.

Est-ce que quelqu'un sait s'il s'agit d'un "bug" dans la version bêta (je l'ai signalé avec l'application Feedback d'Apple), ou est-ce prévu et / ou quel serait le "correctif" pour cela?

Voir aussi: Documentation AppleScript "volume de montage"

Hanzaplastique
la source
3
Cela pourrait être lié au fait qu'Apple a verrouillé le /Volumesdossier dans lequel le partage réseau est monté en accès root uniquement, nécessitant l'autorisation de l'utilisateur pour créer le point de montage. Malheureusement, je ne connais pas de solution pour le moment, même si je vais jouer avec la modification des sudoers sur l'ordinateur. J'ai un radar ouvert sur openradar.appspot.com/radar?id=4948585099558912 où Apple a confirmé qu'il est verrouillé.
mattdwen

Réponses:

14

Comme Apple a répondu au ticket référencé dans le lien Open Radar de mattdwen ci - dessus, à partir de macOS Sierra 10.12,

vous ne pouvez plus créer d'éléments dans / Volumes à moins que root.

De plus, ma meilleure compréhension de la commande de volume de montage AppleScript est qu'elle n'a aucun moyen de spécifier le point de montage et, par conséquent, elle monte uniquement les volumes /Volumesvia le mécanisme standard du Finder. Donc, je ne pense pas que vous puissiez le faire via AppleScript.

Mais il y a une autre façon. Vous pouvez accomplir la même chose en utilisant la mountcommande de niveau inférieur :

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

Après avoir monté le volume de cette façon, vous devriez voir une icône "volume" normale apparaître sur votre bureau et le ~/mntrépertoire apparaîtra comme "partager" lorsque vous parcourez votre répertoire utilisateur via le Finder.

La seule chose qui manque à cette approche est la sauvegarde des informations de connexion dans le trousseau. Pour ce faire, vous devez faire un peu plus de script. Quelque chose comme ça.

Enregistrez le mot de passe:

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

Récupérez le mot de passe et montez le partage:

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

REMARQUE: Si vous avez des caractères spéciaux dans votre mot de passe, vous devrez probablement le coder par URL, peut-être comme ceci:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password
mnewt
la source
Merci mnewt et mattdwen! Cela devrait être un bon travail! (et peut-être mieux que d'utiliser AppleScript)
Hanzaplastique
4
vraisemblablement cette approche briserait tout ce qui fait référence à des fichiers /Volumes/share?
Jack
Cela casserait définitivement quelque chose comme ça.
Br.Bill
3

Cela a été corrigé par Apple dans macOS Sierra 10.12.2:

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

Jan Dubois
la source
Il y a une faute de frappe dans leur exemple "annuler". La bonne méthode "annuler" serait: sudo defaults delete /Library/Preferences/com.apple.NetworkAuthorization AllowUnknownServers(supprimé "écrire" dans cette ligne).
Hanzaplastique