Listing available smb shares on a network through the command line in linux
Solution 1
This command is a very little known secret of Samba. It returns IP adresses of all Samba servers in one's own broadcast domain:
nmblookup __SAMBA__
This one returns a list of all NetBIOS names and their aliases of all Samba servers in the neighbourhood (it does a 'node status query'):
nmblookup -S __SAMBA__
This one returns a list of all IP adresses of SMB servers (that is, Linux+Unix/Samba or Windows) in the neighbourhood:
nmblookup '*'
Finally, all NetBIOS names and their aliases of all SMB servers (Linux+Unix/Samba or Windows):
nmblookup -S '*'
The command given in the other answer nmblookup -S WORKGROUP
does NOT return all Samba or all SMB servers from the neighbourhood. Instead, it returns all servers' NetBIOS names who happen to be members of a workgroup named 'WORKGROUP'. The results are independent of the servers' OS (wether that is Windows, or wether that is Linux/Samba) -- and it is a well known fact that sometimes lots of Windows member server are part of a Samba-controlled domain or workgroup. [Yes, it happens that Samba's default workgroup name is 'WORKGROUP'... but so what??]. -- But the question was 'How do I get to know all SMB (Samba?!?) servers in my network neighbourhood?'
Solution 2
nmblookup -S WORKGROUP
from the: https://web.archive.org/web/20101121043732/http://brneurosci.org/linuxsetup38b.html
Solution 3
On my network - as of this writing (things do change) - smbtree is my preferred solution. It asks for your password (meaning your Samba password), and then it gives a nicely detailed list that includes netbios name, available shares, and the share description.
nmblookup, on the other hand, does not list all the available shares on my network. I do not know why it does not, but it doesn't.
From the smbtree man page:
smbtree is a smb browser program in text mode. It is similar to the "Network Neighborhood" found on Windows computers. It prints a tree with all the known domains, the servers in those domains and the shares on the servers.
The nmblookup command does have more switches and options. The nmblookup man page: nmblookup man page
Noted for posterity - as these answers do stick around - and as I said, I find that smbtree would be a better answer to the OP on my network.
Solution 4
In samba version 4, nmblookup '*'
no longer works; it only gives the local server. It used to work in samba version 3.
Now, you have to use nmblookup WORKGROUP
, which as Kurt mentioned, only returns servers in workgroup WORKGROUP
.
Solution 5
a better way, more fiendly printed, is to use 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
Related videos on Youtube
jcb344
Updated on September 17, 2022Comments
-
jcb344 almost 2 years
I was wondering if there is a way of listing all the smb servers on a local network (like looking at a network neighborhood in windows) via the command line in fedora.
-
Kurt Pfeifle almost 14 yearsWhat do you mean with 'smb servers'? Do you mean Samba servers, or do you mean all file servers (wether Samba or Windows, wether in my own or in other workgroups/domains) which speak the SMB protocol?
-
Kurt Pfeifle almost 14 yearsAlso, your question's title (mentioning 'smb shares') somewhat contradicts its text (mentioning 'smb servers'). Which one did you mean?
-
-
Ophidian almost 14 yearsYou might need to tweak the firewall settings on a default install.
-
Kurt Pfeifle almost 14 yearsI'll downvote this answer. -- I can't believe such a WRONG answer gets 2 upvotes. The given command only lists servers which are members of a workgroup named "workgroup". And it lists them regardless of OS (Samba/Linux or not, Windows or not). The question was about getting to know all SAMBA servers on the local network (regardless of workgroup name).
-
user4250202 over 13 yearsActually, he didn't say he was looking for all samba servers. He said "all the smb servers". I suppose I failed to elaborate to the degree that you did, in that you can search for wildcard workgroups--but really, I made it clear that I was referencing the manual, and I got the OP what he needed. Not to mention, I answered half a month before you did--I don't understand what you're so bent out of shape about.
-
Kettle1 over 8 yearsThis should be marked as the correct answer.
-
davidhq over 7 yearsInterestingly using these suggestions I only see the Samba share on the server I'm currently on. To really detect another Samba server (it has WORKGROUP workgroup), I had to run
nmblookup -S WORKGROUP
.. not sure how to really list any server sincenmblookup -S '*'
and other commands only returned the local server as mentioned above. -
Ben C over 6 years@FreeSoftwareServers Try
smbtree -N
if you are looking at services that don't need passwords. -
FreeSoftwareServers over 6 yearsI understand, it wanted the SMB password not my root password, they were likely the same, but yes i have my shares restricted to non dhcp IP address pool, but no password
-
FredG over 6 yearsFor me also, the other answer worked better, though not correct.
nmblookup -S '*'
returns only the local server. more information might be needed... SAMBA only returns samba servers, while I'd all like all SMB share (windows included). At least I found the window share which were part of WORKGROUP. I'm not sure why all the fuss about samba/smbd, and why this answer would get the points. -
Kurt Pfeifle over 6 years@Fred: The answer says explicitly (not clearly enough?!?) that (1) with
__SAMBA__
you get the Samba servers, and (2) with'*'
you get all SMB servers. This answer gets points because it is the correct one. -
user4838962 about 6 years@Corvus-B had already suggested
smbtree
in an answer long before. -
Milan Kerslager over 5 yearsIt does not work in Samba 4.x anymore.
-
Admin almost 2 yearsIt works fine for me with Samba 4 (Ubuntu 22.04), but there are some changes, it lists IPs and not names, I had to add
-T
option to see names.