繁体   English   中英

使用 bash 脚本在 Mac OS X 上安装驱动器(并且不使用期望)

[英]mount a drive on Mac OS X with bash script (and NOT use expect)

我想使用 bash 在 OS X 中安装 Samba 驱动器。 这条线可以解决问题:

mount -t smbfs //$SAMBAUSER@$ADRESS/$NAMEOFSHARE $MACOSXPATH

只有一个问题。 我希望它在没有用户输入的情况下完成 - 这意味着不能手动输入密码。而且我不会要求我的用户下载 fink 以便他们可以安装期望(如这里所示)。

我尝试通过执行以下操作将公认的解决方案应用于此处显示的类似 StackOverflow 问题:

echo "mypassword" | mount -t smbfs //$SAMBAUSER@$ADRESS/$NAMEOFSHARE $MACOSXPATH --stdin

但没有运气 - 这不起作用,Mac OS X 告诉我我使用了不正确的 mount 命令:

usage: mount [-dfruvw] [-o options] [-t ufs | external_type] special node
   mount [-adfruvw] [-t ufs | external_type]
   mount [-dfruvw] special | node

有什么建议么? 使用期望脚本会很容易——但这会破坏用户体验,让我在脑海中拥有这个先决条件。

这个苹果支持讨论线程中的答案对我有用:

osascript -e 'mount volume "smb://user:password@server/share"'

如果mount(8)不能只在文件系统上调用mount系统调用,它会寻找一个程序来帮助它。 在 FreeBSD 和 Mac OS X 上,这些帮助程序遵循命名约定mount_XXX ,其中XXX-t参数的值。

这意味着您要查看mount_smbfs(8) 手册页,它告诉我们有关-N的信息:

-N    Do not ask for a password.  At run time, mount_smbfs reads the ~/Library/Preferences/nsmb.conf
      file for additional configuration parameters and a password.  If no password is found,
      mount_smbfs prompts for it.

不幸的是,man page trail 以nsmb.conf ,没有提到任何关于存储密码的内容。 至少在 FreeBSD 8.0 上,解决方案是将带有纯文本(!)密码值的password密钥放在[SERVER:USER]标题下 根据链接的nsmb.conf手册页,这将是类型C

因此,您似乎希望将预配置的nsmb.conf转储到用户的~/Library/Preferences/目录中,然后使用-N调用mount命令。 据我所知,您无法提供散列值,这并不是特别棒。 我将尝试在几个小时内访问 MacBook 来测试这一点。

注意:这不是使用 GNU 工具链的方法。 如果您使用的是 Linux,您可能会使用类似mount.cifs(8)的东西。 这种情况下,正确的解决方案是credentials=filename选项(当然,在-o之后使用),其中filenamekey=value形式的凭证文件,由换行符分隔。 http://linux.die.net/man/8/mount.cifs

我会给你2个选择。 首先,在命令行中包含密码:

mount -t smbfs //$SAMBAUSER:$PASSWORD@$ADRESS/$NAMEOFSHARE $MACOSXPATH

这不是一个很好的选择,因为此时恰好登录的任何人都可以看到命令行(包括密码)。 不是很好,但这是一种可能性。

其次,使用期望。 您链接的 Mac OS X 提示文章可追溯到 2002 年,当时 OS X v10.2 是最新的。 虽然 10.2 显然没有将 expect 作为标准组件包含在内,但 10.6 包含,而且我很确定它现在已包含在多个版本中。

#!/usr/bin/expect -f
spawn mount -t smbfs //fred@12.34.56.78/myfiles /tmp/mountpoint
expect "Password:"
send "wibble\r"
wait

您不仅可以使用散列值,而且至少在旧版本中是这样。 smbutil 的 crypt 选项不是 DOD 级别的安全性,但与大多数安全性一样,您试图让诚实的人保持诚实:弯曲的人会找到方法。 它似乎在 Mountain Lion 中被破坏,但 ~/Library/Preferences 中的 nsmb.conf 文件在操作系统级别应该是安全的。 如果 /etc/nsmb.conf 存在,它将覆盖它。 我确信纯文本文件过时是有原因的,但我们不是用 NetInfo 来 go 吗? Apple 花了多长时间才允许使用旧的备用数据库(/etc/hosts、/etc/passwd)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM