Как я могу смонтировать общий ресурс 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.