смонтировать диск в Mac OS X с помощью скрипта bash (и НЕ использовать ожидаемо) - PullRequest
1 голос
/ 02 июля 2011

Я бы хотел смонтировать диск Samba в OS X, используя bash.Эта строка делает трюк:

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

только одна проблема.Я хочу, чтобы это было сделано без ввода данных пользователем - это означает, что пароль не может быть введен вручную. И я не собираюсь просить моих пользователей загружать fink только для того, чтобы они могли ожидать установки (как видно здесь ).

Я попытался применить принятое решение к аналогичной проблеме StackOverflow, показанной здесь , выполнив это:

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

, но не повезло - это не работает, и Mac OSX говорит мне, что я неправильно использовал команду монтирования:

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

Есть предложения?Это было бы легко с ожидаемым сценарием - но это разрушило бы пользовательский опыт, чтобы иметь эту предпосылку в моей голове.

Ответы [ 4 ]

4 голосов
/ 06 апреля 2015

Ответ в этой ветке обсуждения поддержки Apple работал для меня:

osascript -e 'mount volume "smb://user:password@server/share"'
4 голосов
/ 02 июля 2011

Если 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.

К сожалению, след справочной страницы заканчивается однимдля nsmb.conf, который не упоминает ничего о хранении паролей .Во FreeBSD 8.0, по крайней мере, решением является , чтобы поместить ключ password с паролем в виде простого текста (!) Под заголовком [SERVER:USER] .Это будет тип C в соответствии со связанной справочной страницей nsmb.conf.

Так что, похоже, вы захотите сбросить предварительно сконфигурированный nsmb.conf в каталог ~/Library/Preferences/ вашего пользователя и затем вызватьВаша mount команда с -N.Насколько я знаю, вы не можете предоставить хеш-значение, что не особенно здорово.Я попытаюсь получить доступ к MacBook через несколько часов, чтобы проверить это.

NB : Это , а не , как это сделать с помощью цепочки инструментов GNU.Если вы работаете в Linux, вы, вероятно, будете использовать что-то вроде mount.cifs(8).Правильным решением в в этом случае является опция credentials=filename (конечно, используется после -o), где filename - это файл учетных данных в форме key=value, разделенных символами новой строки.См http://linux.die.net/man/8/mount.cifs

2 голосов
/ 02 июля 2011

Я дам вам 2 варианта.Во-первых, укажите пароль в командной строке:

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

Это не лучший вариант, поскольку командная строка (включая пароль) видна всем, кто в данный момент вошел в систему.Не здорово, но это возможно.

Во-вторых, используйте ожидаемо.Статья Mac OS X Hints, на которую вы ссылались , датируется 2002 годом, когда OS X v10.2 была бы актуальной.Хотя 10.2, очевидно, не включает в себя ожидаемый в качестве стандартного компонента, 10.6 - нет, и я уверен, что он включен в несколько версий.

#!/usr/bin/expect -f
spawn mount -t smbfs //fred@12.34.56.78/myfiles /tmp/mountpoint
expect "Password:"
send "wibble\r"
wait
0 голосов
/ 09 января 2013

Вы можете использовать не только хэшированное значение, по крайней мере, в старых версиях. Опция crypt для smbutil - это не защита на уровне DOD, но, как и в большинстве случаев, вы пытаетесь сохранить честность честных людей: согнутые найдут выход. Кажется, он не работает в Mountain Lion, но файл nsmb.conf в ~ / Library / Preferences должен быть защищен на уровне ОС. /Etc/nsmb.conf переопределит его, если он существует. Я уверен, что есть причина, почему простые текстовые файлы устарели, но разве мы не пошли на это с NetInfo? Сколько времени понадобилось Apple, чтобы позволить использовать старые резервные копии (/ etc / hosts, / etc / passwd)?

...