macOS Sierra: AppleScript-Mount-Volume fordert immer wieder zur Anmeldung auf

12

Für mehrere OS X-Versionen habe ich verwendet:

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

Das hat super geklappt, eine schöne und leise Montage der Netzwerkfreigabe, wenn diese natürlich verfügbar ist.

Vor kurzem habe ich macOS Sierra (10.12 Public Beta, Build 16A238m) installiert und das Skript funktioniert immer noch. Es wird jedoch plötzlich immer ein Anmeldedialogfeld angezeigt, das mit den Werten "Ihr Benutzername" und "Ihr Passwort" gefüllt ist. Der Benutzer muss weiterhin auf "Verbinden" klicken, um die Freigabe bereitzustellen.

Weiß jemand, ob dies ein "Fehler" in der Beta-Version ist (ich habe dies mit Apples Feedback-App gemeldet), oder wird dies erwartet und / oder was wäre das "Update" dafür?

Siehe auch: AppleScript-Dokumentation "Volume einbinden"

Hanzaplastique
quelle
3
Dies könnte damit zusammenhängen, dass Apple den /VolumesOrdner, in dem die Netzwerkfreigabe nur für den Root-Zugriff bereitgestellt wird, gesperrt hat und für die Erstellung des Bereitstellungspunkts eine Benutzerautorisierung erforderlich ist. Leider kenne ich im Moment keine Lösung, obwohl ich mit dem Ändern von Sudoern am Computer spielen werde. Ich habe ein offenes Radar unter openradar.appspot.com/radar?id=4948585099558912, wenn Apple bestätigt hat, dass es gesperrt ist.
Mattdwen

Antworten:

14

Als Apple auf das Ticket antwortete, auf das oben in mattdwens Open Radar-Link verwiesen wurde , ab macOS Sierra 10.12,

Sie können keine Elemente mehr in / Volumes erstellen, es sei denn, root.

Mein bestes Verständnis des AppleScript- Befehls " Mount Volume" ist außerdem, dass er keine Möglichkeit zum Festlegen des Mount-Punkts bietet und daher nur Volumes unter /Volumesdem Standardmechanismus des Finders bereitstellt. Ich glaube nicht, dass Sie dies über AppleScript tun können.

Aber es gibt noch einen anderen Weg. Sie können dasselbe mit dem mountBefehl der unteren Ebene erreichen :

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

Nachdem Sie das Volume auf diese Weise bereitgestellt haben, sollte auf Ihrem Desktop ein normales "Volume" -Symbol angezeigt werden, und das ~/mntVerzeichnis wird als "Freigabe" angezeigt, wenn Sie Ihr Benutzerverzeichnis über den Finder durchsuchen.

Das einzige, was bei diesem Ansatz fehlt, ist das Speichern der Anmeldeinformationen in Keychain. Dazu müssen Sie etwas mehr Skripte erstellen. Etwas wie das.

Speichern Sie das Passwort:

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

Rufen Sie das Kennwort ab und stellen Sie die Freigabe bereit:

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

HINWEIS: Wenn Ihr Passwort Sonderzeichen enthält, müssen Sie es wahrscheinlich per URL verschlüsseln, möglicherweise wie folgt:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password
mnewt
quelle
Danke mnewt und mattdwen! Dies sollte eine gute Lösung sein! (und möglicherweise eine bessere als mit AppleScript)
Hanzaplastique
4
vermutlich würde dieser Ansatz alles kaputt machen, was auf Dateien verweist /Volumes/share?
Jack
Es würde definitiv so etwas kaputt machen.
Br.Bill
3

Dies wurde von Apple in macOS Sierra 10.12.2 behoben:

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

Jan Dubois
quelle
In ihrem Beispiel "Rückgängig" gibt es einen Tippfehler. Der richtige Weg zum "Rückgängigmachen" wäre: sudo defaults delete /Library/Preferences/com.apple.NetworkAuthorization AllowUnknownServers(Entfernen Sie das "Schreiben" in dieser Zeile).
Hanzaplastique