macOS Sierra:AppleScript装载量不断询问登录


12

我使用了多个OS X版本:

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

如果可以的话,这非常有效,可以很好地和安静地安装网络共享。

现在,我最近安装了macOS Sierra(10.12公共测试版,内部版本16A238m),该脚本仍然有效,但是现在突然会始终显示一个登录对话框,并预先填充了“ yourusername”和“ yourpassword”值。用户仍然必须单击“连接”以安装共享。

有谁知道这是否是Beta版中的“错误”(我曾通过Apple的“反馈”应用程序报告过此错误),或者这是预期的和/或该问题的“修复”是什么?

另请参阅:AppleScript文档“装载量”


3
这可能与以下事实有关:Apple已锁定了/Volumes仅将网络共享安装到根访问权限的文件夹,需要用户授权才能创建安装点。不幸的是,尽管我要在计算机上修改sudoers,但目前我还不知道要解决的问题。我在openradar.appspot.com/radar?id=4948585099558912上有一个Open Radar,然后 Apple确认它已被锁定。
mattdwen

Answers:


14

正如Apple在macOS Sierra 10.12上回复了上面mattdwen的Open Radar链接中引用的票证一样,

您不能再在/ Volumes中创建项目,除非是root用户。

此外,我对AppleScript mount volume命令的最佳理解是它没有指定挂载点的方法,因此只能/Volumes通过Finder的标准机制来挂载卷。因此,我认为您无法通过AppleScript做到这一点。

但是还有另一种方式。您可以使用下级mount命令完成相同的操作:

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

通过这种方式安装卷后,您应该会在桌面上看到一个正常的“卷”图标,并且~/mnt当您通过Finder浏览用户目录时,该目录将显示为“共享”。

这种方法缺少的一件事是将登录凭据保存在钥匙串中。为此,您需要做更多的脚本编写。这样的事情。

保存密码:

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

检索密码并挂载共享:

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

注意:如果密码中包含特殊字符,则可能需要对其进行URL编码,如下所示:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password

谢谢mnewt和mattdwen!这应该是一个很好的解决方法!(并且可能比使用AppleScript更好)
Hanzaplastique

4
大概这种方法会破坏在/Volumes/share?下引用文件的任何内容。
杰克

这样肯定会破坏任何东西。
Br.Bill

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.