簡體   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