如何从命令行挂载SMB共享?


78

我想从命令行(终端)挂载SMB网络共享;我该怎么办?

我正在使用Mac OS X 10.6.4。

Answers:


71

您可以使用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挂载找到?
伊恩·沃恩

如果我的用户名中包含@字符,该如何处理?例如,当我使用xyz@microsoft.com这样的Microsoft帐户时?我试图给在单,双引号,但力工作的用户名..
Yashvit

2
我收到此错误:mount_smbfs: could not find mount point /Volumes/Share: No such file or directory
Iulian Onofrei

11
man mountOS X Yosemite上引用:Note: You should always use the system mount command and never call mount_smbfs directly.
ssc

3
@Yashvit:更改'@'到'%40'
WGroleau

69

使用open(1)命令和URL:

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

优点:/Volumes为您创建安装点。

缺点:需要Finder处于运行状态。


4
我更喜欢使用该版本进行本地网络中的快速连接,因此所有用户都是已知的,因此这是使用mount_smbfs的简单命令-我实际上遇到了与不存在的路径有关的问题-而如果我需要使用特殊的文件系统,或者我需要尝试其他用户或想要不同的挂载点-好的-但是这种情况多久发生一次...所以我赞成这种更简单的解决方案!做得好!好吧,我是一个仍在运行Finder的终端狂,但这就像我们90%的人一样,对吧?
hexerei软件2015年

并非Finder总是打开,至少是一个过程吗?
Iulian Onofrei '16

1
@Iulian Onofrei:除非用户以交互方式登录,否则不会。我需要mountcron作业中使用直接命令。使用该open命令,如果交互式会话消失(例如,在电源故障之后),这些操作将失败。
乔治,

另外,请注意open,即使命令后来无法连接到网络驱动器,也始终将命令传递给Finder,就好像成功退出一样。
乔纳森·雷恩

23

您应该看看mount的帮助:

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

由于某种原因,服务器的简称和FQDN均无效,因此我使用'ping(名称)获取IP。换句话说,DNS将解析名称,但mount_smbfs无法解析。

而且我无法将挂载点放在/ Volumes中,因为启动会删除它。

一个怪癖:经过几天,两三天的正常运行,LibreOffice,Adobe Reader和Finder找不到这两个份额中的一个,但是shell和TextEdit没问题。两三天后,它神秘地再次开始工作。

如果您进行了这些编辑并且不想重新启动,则可以使用“ auto mount -vc”将其安装

更新:更多古怪。(1)这里有两个WiFi系统,其中一个无法访问Windows服务器。一周几次,一个或两个路由器都掉线。如果“好人”掉线,而MacBook自动连接到另一人,则SMB驱动程序没有告诉我驱动器处于脱机状态,而是说“用户太多”。(2)每周几次,当我尝试访问Windows文件时,我被“拒绝权限”。这通常持续约半小时,在此期间,我可以进入Windows栏并登录并查看具有相同ID和密码的文件。


由于本周两次对此进行了投票,因此我应该指出,它是MacOS之前编写的多个版本。
WGroleau

4

使用AppleScript很方便,因为它将密码存储在钥匙串中。重击功能:

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

从bash调用“ mymount”,通过标准的“钥匙串”弹出窗口输入密码,如果一切顺利,则请求的卷将安装在/ Volumes中。


这也是完美的方法。我不喜欢批准的答案,因为它以root用户身份挂载。我认为,这些/usr/bin/osascript -e 'mount volume "smb://username:password@server/share"'open /Volumes; open 'smb://username:password@server/share'
单线

3

我要补充一点,如果您具有“工作组\用户名”形式的用户名,则应像这样安装它:

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

来源:从此处改编示例


-1

旧帖子,但如何像这样安装:

smb://no_username:password@MACHINENAME 

像时间机器驱动器?


1
“从命令行(终端)” ...这不是有效的bash命令。我假设您的意思是使用Finder +⌘K连接到服务器,这不是OP要求的。
mattmc3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.