Как я могу смонтировать общий ресурс SMB из командной строки?


73

Я хотел бы смонтировать сетевой ресурс SMB из командной строки (терминала); как бы я пошел об этом?

Я использую Mac OS X 10.6.4.

Ответы:


70

Вы можете легко добиться этого, используя mount_smbfs(на самом деле, обертку для mount -t smbfs):

mount_smbfs //user@SERVER/folder ./mntpoint

При желании добавьте рабочую группу:

mount_smbfs -W workgroup //user@SERVER/folder ./mntpoint

Вы могли бы, конечно, изменить ./mntpoint(для чего-то вроде /Volumes/smb).

После этого просто перейдите ./mntpointк просмотру ваших данных.

Чтобы размонтировать, используйте следующую команду:

umount ./mntpoint

2
Я получаю: `mount_smbfs: ошибка монтирования: путь: ошибка ввода / вывода ', в то время как он монтирует поиск через Finder-> Connect to Server?
Ян Воан

Как мне это сделать, если в моем имени пользователя есть @ char? Например, когда я использую учетную запись Microsoft как xyz@microsoft.com? Я пытался дать имя пользователя в одинарных и двойных кавычках, но не работал ..
Яшвит

2
Я получаю эту ошибку:mount_smbfs: could not find mount point /Volumes/Share: No such file or directory
Iulian Onofrei

11
Цитата из man mountOS X Йосемити:Note: You should always use the system mount command and never call mount_smbfs directly.
SSC

3
@Yashvit: измените '@' на '% 40'
WGroleau

66

Используйте open(1)команду и URL:

open 'smb://username:password@server/share'

Плюсы: создает точку монтирования /Volumesдля вас.

Минусы: требует, чтобы Finder был запущен.


4
Я предпочитаю эту версию для быстрых соединений в моей локальной сети, там все пользователи известны, так что это более простая команда, чем использование mount_smbfs - где у меня действительно были проблемы с несуществующими путями - тогда как если бы мне нужно было подключиться к какому-то новому серверу с специальная файловая система, или мне нужно было бы попробовать другого пользователя или другую точку монтирования - хорошо - но как часто это происходит ... так что мой палец поднимается к этому более простому решению! Отлично сработано! Хорошо, я фанат Терминала, у которого все еще работает Finder, но это как 90% из нас, верно?
программное обеспечение hexerei,

Разве не Finderвсегда открывается, по крайней мере, как процесс?
Юлиан Онофрей

1
@Iulian Onofrei: Нет, если пользователь не вошел в систему в интерактивном режиме. Мне нужно было использовать прямую mountкоманду в cronработе. Используя openкоманду, они потерпят неудачу, если интерактивный сеанс пропадет, например, после сбоя питания.
Джордж

Кроме того, обратите внимание, что openвсегда происходит, как если бы он был успешным, если он передал команду в Finder, даже если команде позже не удалось подключиться к сетевому диску.
Джонатан Рен

23

Вы должны взглянуть на помощь горы:

man mount

При ближайшем рассмотрении вы увидите, что тип файловой системы:

mount -t smbfs //username:password@MACHINENAME/SHARENAME /SomeLocalFolderOfChoice

Пароль (и теоретически имя пользователя) не являются обязательными.

Результат вышеприведенной команды не будет выводиться (если все прошло нормально), но, a cd /SomeLocalFolderOfChoice, должен давать удаленные результаты. Обратите внимание, что SomeLocalFolderofChoice должен существовать.

Вы также можете использовать mount_smbfs для замены mount -t smbfs.


5

Что сработало для меня, чтобы заставить их монтировать во время загрузки:

==> /etc/auto_master <==
#
# Automounter master map
#
+auto_master        # Use directory service
/net            -hosts      -nobrowse,hidefromfinder,nosuid
/home           auto_home   -nobrowse,hidefromfinder
/Network/Servers    -fstab
/-          -static
/-          auto_smb          # add this line <**********

==> /etc/auto_smb <==         # Create this if it doesn't exist <****
/(not Volumes)/Public   -fstype=smbfs,soft smb://(user):(password)@192.168.140.5/data/Public
/(not Volumes)/ WGroleau -fstype=smbfs,soft smb://(user):(password)@192.168.140.5/data/Students/wes_groleau

По какой-то причине ни короткое имя, ни полное доменное имя сервера не работало, поэтому я использовал ping (имя) для получения IP-адреса. Другими словами, DNS разрешил бы имя, но mount_smbfs не смог.

И я не мог поместить точку монтирования в / Volumes, потому что при загрузке это удалило бы ее.

Одна странность: после того, как это работало нормально в течение нескольких дней, в течение двух или трех дней, LibreOffice, Adobe Reader и Finder не смогли найти ОДИН из двух общих ресурсов, но у оболочки и TextEdit не было проблем. Через два или три дня он загадочным образом снова заработал.

Если вы делаете эти изменения и не хотите перезагружаться, вы можете смонтировать их с помощью 'auto mount -vc'

Обновление: больше причуд. (1) Здесь есть две системы WiFi, и одна из них не имеет доступа к серверам Windows. Пару раз в неделю один или оба маршрутизатора отключаются. Если «хороший» выходит из строя и MacBook автоматически подключается к другому, вместо того, чтобы сказать, что диск отключен, драйверы SMB говорят «Слишком много пользователей». (2) Пару раз в неделю я получаю «разрешение отказано», когда пытаюсь получить доступ к своим файлам Windows. Обычно это длится около получаса, в течение которого я могу зайти на панель Windows, войти в систему и просмотреть файлы с тем же идентификатором и паролем.


Поскольку за эту неделю дважды голосовали, я должен отметить, что она была написана несколько версий MacOS назад.
WGroleau

4

Использовать AppleScript удобно, потому что он хранит ваши пароли в связке ключей. Функция Баш:

function mymount
{
    osascript <<EOF
mount volume "smb://user@fqdn1/volume1"
mount volume "smb://user@fqdn2/volume2"
EOF
}

Вызовите «mymount» из bash, введите пароли через стандартное всплывающее окно «Связка ключей», и, если все пойдет хорошо, запрошенные тома будут смонтированы в / Volumes.


Это тоже идеальный подход. Мне не нравится одобренный ответ, потому что он монтируется как пользователь root. На мой взгляд, эти однострочники должны быть лучшими вариантами: /usr/bin/osascript -e 'mount volume "smb://username:password@server/share"'илиopen /Volumes; open 'smb://username:password@server/share'
laimison

3

Я бы добавил, что если у вас есть имя пользователя в форме «рабочая группа \ имя пользователя», вы должны смонтировать его так:

mount -t smbfs "//WORKGROUP;username:password@MACHINENAME/SHARENAME" /SomeLocalFolderOfChoice

Источник: адаптируя пример отсюда


-1

старый пост, а как насчет монтажа вот так:

smb://no_username:password@MACHINENAME 

как машина времени ездит?


1
«из командной строки (терминала)» ... это недопустимая команда bash. Я предполагаю, что вы имеете в виду с Finder + toK для подключения к серверу, который не то, что спросил ОП.
mattmc3
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.