Listing available smb shares on a network through the command line in linux

110,475

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
Share:
110,475

Related videos on Youtube

jcb344
Author by

jcb344

Updated on September 17, 2022

Comments

  • jcb344
    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
      Kurt Pfeifle almost 14 years
      What 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
      Kurt Pfeifle almost 14 years
      Also, your question's title (mentioning 'smb shares') somewhat contradicts its text (mentioning 'smb servers'). Which one did you mean?
  • Ophidian
    Ophidian almost 14 years
    You might need to tweak the firewall settings on a default install.
  • Kurt Pfeifle
    Kurt Pfeifle almost 14 years
    I'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
    user4250202 over 13 years
    Actually, 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
    Kettle1 over 8 years
    This should be marked as the correct answer.
  • davidhq
    davidhq over 7 years
    Interestingly 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 since nmblookup -S '*' and other commands only returned the local server as mentioned above.
  • Ben C
    Ben C over 6 years
    @FreeSoftwareServers Try smbtree -N if you are looking at services that don't need passwords.
  • FreeSoftwareServers
    FreeSoftwareServers over 6 years
    I 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
    FredG over 6 years
    For 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
    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
    user4838962 about 6 years
    @Corvus-B had already suggested smbtree in an answer long before.
  • Milan Kerslager
    Milan Kerslager over 5 years
    It does not work in Samba 4.x anymore.
  • Admin
    Admin almost 2 years
    It 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.