Listando compartilhamentos smb disponíveis em uma rede através da linha de comando no linux

32

Eu queria saber se existe uma maneira de listar todos os servidores smb em uma rede local (como olhar para um bairro de rede no Windows) através da linha de comando no fedora.

jcb344
fonte
O que você quer dizer com 'servidores smb'? Você quer dizer servidores Samba ou todos os servidores de arquivos (Samba ou Windows, quer no meu próprio ou em outros grupos de trabalho / domínios) que falam o protocolo SMB?
Kurt Pfeifle
11
Além disso, o título da sua pergunta (mencionando 'compartilhamentos smb') contradiz um pouco o texto (mencionando 'servidores smb'). Qual você quis dizer?
Kurt Pfeifle

Respostas:

43

Este comando é um segredo muito pouco conhecido do Samba. Ele retorna endereços IP de todos os servidores Samba no próprio domínio de broadcast:

nmblookup __SAMBA__

Este retorna uma lista de todos os nomes NetBIOS e seus aliases de todos os servidores Samba na vizinhança (faz uma 'consulta de status do nó' ):

nmblookup -S __SAMBA__

Este retorna uma lista de todos os endereços IP de servidores SMB (ou seja, Linux + Unix / Samba ou Windows) na vizinhança:

nmblookup '*'

Por fim, todos os nomes NetBIOS e seus aliases de todos os servidores SMB (Linux + Unix / Samba ou Windows):

nmblookup -S '*'


O comando dado na outra resposta nmblookup -S WORKGROUPque não devolver todos Samba ou todos os servidores SMB do bairro. Em vez disso, ele retorna os nomes NetBIOS de todos os servidores que são membros de um grupo de trabalho chamado 'WORKGROUP' . Os resultados são independentes do sistema operacional dos servidores (Windows ou Linux / Samba) - e é um fato bem conhecido que às vezes muitos servidores membros do Windows fazem parte de um domínio ou grupo de trabalho controlado pelo Samba. [Sim, acontece que o nome do grupo de trabalho padrão do Samba é 'WORKGROUP' ... mas e daí?]. - Mas a pergunta era 'Como eu conheço todos os servidores SMB (Samba?!?) No meu bairro de rede?'

Kurt Pfeifle
fonte
Isso deve ser marcado como a resposta correta.
rbellamy
4
Curiosamente, usando essas sugestões, só vejo o compartilhamento Samba no servidor em que estou atualmente. Para realmente detectar outro servidor Samba (ele possui o grupo de trabalho GRUPO DE TRABALHO), tive que executar nmblookup -S WORKGROUP.. não sei como realmente listar qualquer servidor, pois nmblookup -S '*'outros comandos retornaram apenas o servidor local, como mencionado acima.
Davidhq
Para mim também, a outra resposta funcionou melhor, embora não esteja correta. nmblookup -S '*'retorna apenas o servidor local. mais informações podem ser necessárias ... O SAMBA retorna apenas servidores de samba, enquanto eu gostaria de compartilhar todos os SMBs (janelas incluídas). Pelo menos, encontrei o compartilhamento de janela que fazia parte do GRUPO DE TRABALHO. Não sei ao certo por que todo esse alarido sobre samba / smbd e por que essa resposta seria suficiente.
Fred
@ Fred: A resposta diz explicitamente (não é suficientemente claro?!?) Que (1) __SAMBA__você recebe os servidores Samba e (2) '*'você recebe todos os servidores SMB . Esta resposta ganha pontos porque é a correta.
Kurt Pfeifle
Eu só digo que isso não está funcionando no meu computador. Estou usando o ubuntu 16.04, nmblookup do pacote samba-common-bin 2: 4.3.8 + dfsg-0ubuntu1. Talvez haja algo errado com o meu ambiente. Ou regressão nas ferramentas, já faz muito tempo que essa pergunta foi respondida. O comentário anterior sugere que não estou sozinho vendo esse comportamento.
Fred
12
nmblookup -S WORKGROUP 

from: https://web.archive.org/web/20101121043732/http://brneurosci.org/linuxsetup38b.html

andyortlieb
fonte
Pode ser necessário ajustar as configurações do firewall em uma instalação padrão.
Ophidian
2
Eu vou votar esta resposta. - Não acredito que uma resposta tão errada receba 2 votos positivos. O comando fornecido lista apenas os servidores membros de um grupo de trabalho chamado "grupo de trabalho". E os lista independentemente do sistema operacional (Samba / Linux ou não, Windows ou não). A pergunta era sobre conhecer todos os servidores SAMBA na rede local (independentemente do nome do grupo de trabalho).
Kurt Pfeifle
7
Na verdade, ele não disse que estava procurando todos os servidores de samba. Ele disse "todos os servidores smb". Suponho que não consegui elaborar o grau que você fez, pois pode procurar grupos de trabalho com caracteres curinga - mas, na verdade, deixei claro que estava fazendo referência ao manual e obtive do OP o que ele precisava. Sem mencionar, eu respondi meio mês antes de você - eu não entendo o que você está tão fora de forma.
andyortlieb
10

Na minha rede - no momento em que escrevo (as coisas mudam) - smbtree é minha solução preferida. Ele solicita sua senha (ou seja, sua senha do Samba) e fornece uma lista bem detalhada que inclui o nome netbios, os compartilhamentos disponíveis e a descrição do compartilhamento.

O nmblookup, por outro lado, não lista todos os compartilhamentos disponíveis na minha rede. Não sei por que não, mas não.

Na página do manual smbtree:

smbtree é um programa de navegador smb no modo de texto. É semelhante ao "Ambiente de rede" encontrado nos computadores Windows. Ele imprime uma árvore com todos os domínios conhecidos, os servidores nesses domínios e os compartilhamentos nos servidores.

O comando nmblookup tem mais opções e opções. A página de manual nmblookup : página de manual nmblookup

Notável pela posteridade - como essas respostas permanecem por aí - e como eu disse, acho que o smbtree seria uma resposta melhor ao OP na minha rede.

Corvus B
fonte
A saída do smbtree é ótima! - Gostaria que ele não pedisse meu PWD quando estou logado em uma raiz, nunca vi isso antes!
FreeSoftwareServers
@FreeSoftwareServers Experimente smbtree -Nse você está procurando serviços que não precisam de senhas.
Ben C
Eu entendo, ele queria a senha SMB não a minha senha de root, eles eram provavelmente o mesmo, mas sim, eu tenho minhas ações restrito a não dhcp pool de endereços IP, mas nenhuma senha
FreeSoftwareServers
4

uma maneira melhor, mais impressa, é usar o 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
Stagira
fonte
11
@ Corvus-B já havia sugerido smbtreeuma resposta muito antes.
user4838962
3

Outra maneira de fazer isso é via Avahi (Bonjour), desde que os servidores estejam publicando:

avahi-browse -r _smb._tcp
hooby3dfx
fonte
3

Na versão 4 do samba, nmblookup '*'não funciona mais; apenas fornece ao servidor local. Costumava trabalhar no samba versão 3.

Agora, você precisa usar o nmblookup WORKGROUPque, como Kurt mencionou, retorna apenas servidores no grupo de trabalho WORKGROUP.

Doke
fonte