通过Linux中的命令行列出网络上的可用smb共享


32

我想知道是否有一种方法可以通过fedora中的命令行列出本地网络上的所有smb服务器(例如查看Windows中的网络邻居)。


“ smb服务器”是什么意思?您是指Samba服务器,还是指所有使用SMB协议的文件服务器(无论是Samba还是Windows,在我自己的文件库还是其他工作组/域中)?
Kurt Pfeifle,2010年

1
另外,您问题的标题(提及“ smb服务器”)与文本有所矛盾。你是说哪一个
Kurt Pfeifle,2010年

Answers:


43

这个命令是Samba鲜为人知的秘密。它返回一个自己的广播域中所有Samba服务器的IP地址:

nmblookup __SAMBA__

这将返回所有NetBIOS名称及其附近所有Samba服务器的别名的列表(它执行“节点状态查询”):

nmblookup -S __SAMBA__

此列表返回附近的SMB服务器(即Linux + Unix / Samba或Windows)的所有IP地址的列表:

nmblookup '*'

最后,所有SMB服务器(Linux + Unix / Samba或Windows)的所有NetBIOS名称及其别名:

nmblookup -S '*'


在其他的答案中给出的命令nmblookup -S WORKGROUP不会返回所有Samba或从附近的所有SMB服务器。而是返回所有服务器的NetBIOS名称,这些名称恰好是名为'WORKGROUP'的工作组的成员。结果独立于服务器的OS(无论是Windows,还是Linux / Samba)-众所周知,有时许多Windows成员服务器是Samba控制的域或工作组的一部分。[是的,碰巧Samba的默认工作组名称是'WORKGROUP'...但是怎么办??]。-但是问题是“如何了解网络邻居中的所有SMB(Samba?!?)服务器?”


应该将其标记为正确答案。
rbellamy 2015年

4
有趣的是,使用这些建议,我只能在当前使用的服务器上看到Samba共享。为了真正检测另一个Samba服务器(它具有WORKGROUP工作组),我不得不运行nmblookup -S WORKGROUP..不确定如何真正列出任何服务器,因为nmblookup -S '*'如上所述,其他命令仅返回了本地服务器。
davidhq '17

同样对我来说,其他答案虽然效果不佳,但效果更好。nmblookup -S '*'仅返回本地服务器。可能需要更多信息... SAMBA只返回samba服务器,而我希望所有SMB共享(包括Windows)。至少我找到了属于WORKGROUP的窗口共享。我不确定为什么对samba / smbd会大惊小怪,为什么这个答案会得到要点。
Fred

@Fred:答案明确地说,(不是不够清楚?!?)(1)用__SAMBA__你得到的Samba服务器,和(2)'*'的所有SMB服务器。这个答案很正确,因为它是正确的。
Kurt Pfeifle

我只说这在我的计算机上不起作用。我正在使用ubuntu 16.04,软件包samba-common-bin 2:4.3.8 + dfsg-0ubuntu1中的nmblookup。也许我的环境有问题。还是工具回归,回答这个问题已经有很长时间了。先前的评论表明,我并不孤单地看到这种行为。
弗雷德(Fred)

12

您可能需要在默认安装中调整防火墙设置。
Ophidian 2010年

2
我会否决这个答案。-我简直不敢相信如此错误的答案会有2票赞成。给定的命令仅列出服务器,这些服务器是名为“工作组”的工作组的成员。并且它列出了它们,而不管OS是什么(无论是否为Samba / Linux,是否为Windows)。问题是要了解本地网络上的所有SAMBA服务器(无论工作组名称如何)。
Kurt Pfeifle,2010年

7
实际上,他没有说他正在寻找所有的samba服务器。他说“所有的smb服务器”。我想我无法详细说明您所做的事情,因为您可以搜索通配符工作组-但是,实际上,我已经清楚地表明我在参考该手册,并且获得了OP他所需的东西。更不用说,我比你早了半个月回答了-我不明白你的身体状况如何。
andyortlieb 2010年

10

在我的网络上-撰写本文时(事情确实有所改变)-smbtree是我的首选解决方案。它要求您输入密码(即您的Samba密码),然后给出一个非常详细的列表,其中包括netbios名称,可用共享和共享描述。

另一方面,nmblookup不会列出我的网络上的所有可用共享。我不知道为什么没有,但事实并非如此。

在smbtree手册页中:

smbtree是文本模式下的smb浏览器程序。它类似于Windows计算机上的“网络邻居”。它会打印一棵树,其中包含所有已知域,这些域中的服务器以及服务器上的共享。

nmblookup命令确实具有更多的开关和选项。nmblookup手册页:nmblookup手册页

为了后代而着称-因为这些答案确实存在-正如我所说,我发现smbtree对于我网络上的OP是更好的答案。


smbtree的输出很棒!-希望我登录root时没有要求我提供PWD,以前从未见过!
FreeSoftwareServers

@FreeSoftwareServers smbtree -N如果您正在寻找不需要密码的服务,请尝试。
本C

我知道,它想要SMB密码而不是我的root密码,它们可能是相同的,但是是的,我的共享仅限于非dhcp IP地址池,但没有密码
FreeSoftwareServers

4

更好的方法是使用smbtree,更可靠地打印出来。

$ smbtree
Enter user01's password: DOMAIN_A
        \\FREEBOX_SERVER                Freebox Server
                \\FREEBOX_SERVER\IPC$                   IPC Service (Freebox Server)
                \\FREEBOX_SERVER\Disque dur             AutoShare of fbxhdiskd partition 2

1
@ Corvus-B早已smbtree在一个答案中提出了建议。
user4838962

3

另一种方法是通过Avahi(Bonjour),只要服务器正在发布:

avahi-browse -r _smb._tcp

3

在samba版本4中,它nmblookup '*'不再起作用;它只提供本地服务器。它曾经在samba版本3中工作。

现在,您必须使用nmblookup WORKGROUP(如Kurt所述),它仅返回workgroup中的服务器WORKGROUP

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.