[英]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
之后使用),其中filename
是key=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.