Перечисление доступных общих ресурсов smb в сети через командную строку в linux


32

Мне было интересно, есть ли способ перечисления всех серверов smb в локальной сети (например, просмотр сетевого окружения в windows) через командную строку в fedora.


Что вы имеете в виду под «серверами smb»? Вы имеете в виду серверы Samba или все файловые серверы (Samba или Windows, мой или другие рабочие группы / домены), использующие протокол SMB?
Курт Пфайфл

1
Кроме того, заголовок вашего вопроса (с упоминанием «общих ресурсов smb») несколько противоречит его тексту (с упоминанием «серверов smb»). Какой ты имел ввиду?
Курт Пфайфл

Ответы:


43

Эта команда - очень малоизвестный секрет самбы. Он возвращает IP-адреса всех серверов Samba в своем собственном широковещательном домене:

nmblookup __SAMBA__

Этот возвращает список всех имен NetBIOS и их псевдонимов всех серверов Samba в окрестности (он выполняет «запрос состояния узла» ):

nmblookup -S __SAMBA__

Этот возвращает список всех IP-адресов серверов SMB (то есть Linux + Unix / Samba или Windows) в окрестности:

nmblookup '*'

Наконец, все имена NetBIOS и их псевдонимы для всех серверов SMB (Linux + Unix / Samba или Windows):

nmblookup -S '*'


Команда, приведенная в другом ответе nmblookup -S WORKGROUP, НЕ возвращает все Samba или все SMB-серверы из соседства. Вместо этого он возвращает все имена NetBIOS серверов, которые являются членами рабочей группы с именем «WORKGROUP» . Результаты не зависят от операционной системы серверов (Windows или Windows, или Linux / Samba), и хорошо известно, что иногда многие серверы Windows являются частью домена или рабочей группы, контролируемой Samba. [Да, бывает, что имя рабочей группы Samba по умолчанию - «WORKGROUP» ... ну и что с того, что ??]. - Но вопрос был: «Как мне узнать все SMB (Samba?!?) Серверы в моем сетевом окружении?»


Это должно быть помечено как правильный ответ.
rbellamy

4
Интересно, что, используя эти предложения, я вижу только общий ресурс Samba на сервере, на котором я сейчас работаю. Чтобы действительно обнаружить другой сервер Samba (он имеет рабочую группу WORKGROUP), мне пришлось запустить nmblookup -S WORKGROUP... не уверен, как на самом деле перечислить какой-либо сервер, поскольку nmblookup -S '*'другие команды возвращали только локальный сервер, как упомянуто выше.
Давидк

Для меня также другой ответ работал лучше, хотя и не правильно. nmblookup -S '*'возвращает только локальный сервер. может потребоваться больше информации ... SAMBA возвращает только серверы samba, в то время как я бы хотел получить общий доступ к SMB (включая Windows). По крайней мере, я нашел оконную долю, которая была частью WORKGROUP. Я не уверен, почему вся суета о samba / smbd, и почему этот ответ получит очки.
Фред

@Fred: В ответе четко (недостаточно ясно?!?) Говорится, что (1) __SAMBA__вы получаете серверы Samba и (2) '*'вы получаете все серверы SMB . Этот ответ получает очки, потому что он правильный.
Курт Пфайфл

Я только говорю, что это не работает на моем компьютере. Я использую Ubuntu 16.04, nmblookup из пакета samba-common-bin 2: 4.3.8 + dfsg-0ubuntu1. Может быть, что-то не так с моей средой. Или регрессия в инструментах, давно ответили на этот вопрос. Предыдущий комментарий предполагает, что я не один вижу это поведение.
Фред

12

Возможно, вам придется настроить параметры брандмауэра при установке по умолчанию.
Офидиан

2
Я буду понижать этот ответ. - Я не могу поверить, что такой неправильный ответ получает 2 голоса. Данная команда перечисляет только те серверы, которые являются членами рабочей группы с именем «рабочая группа». И это перечисляет их независимо от ОС (Samba / Linux или нет, Windows или нет). Вопрос был в том, чтобы узнать все серверы SAMBA в локальной сети (независимо от имени рабочей группы).
Курт Пфайфл

7
На самом деле, он не сказал, что ищет все серверы самбы. Он сказал "все сервера smb". Я полагаю, что мне не удалось уточнить в той степени, в которой вы это делали, в том, что вы можете искать рабочие группы с подстановочными знаками - но на самом деле я дал понять, что ссылаюсь на руководство, и я получил ОП, что ему нужно. Не говоря уже о том, что я ответил за полмесяца раньше, чем ты, - я не понимаю, из-за чего ты так расстроен.
andyortlieb

10

В моей сети - на момент написания статьи (вещи меняются) - smbtree - мое предпочтительное решение. Он запрашивает ваш пароль (имеется в виду ваш пароль Samba), а затем выдает очень подробный список, который включает в себя имя netbios, доступные общие ресурсы и описание общих ресурсов.

nmblookup, с другой стороны, не перечисляет все доступные ресурсы в моей сети. Я не знаю, почему это не так, но это не так.

Со страницы руководства smbtree:

smbtree - это браузерная программа smb в текстовом режиме. Это похоже на «Сетевое окружение» на компьютерах с Windows. Он печатает дерево со всеми известными доменами, серверами в этих доменах и общими ресурсами на серверах.

Команда nmblookup имеет больше переключателей и опций. Страница руководства nmblookup: страница руководства nmblookup

Отмеченный для потомков - поскольку эти ответы действительно остаются - и как я уже сказал, я обнаружил, что smbtree был бы лучшим ответом на OP в моей сети.


Вывод smbtree отличный! - Жаль, что он не просил моего PWD, когда я вошел в систему, но никогда раньше такого не видел!
FreeSoftwareServers

@FreeSoftwareServers Попробуйте, smbtree -Nесли вы ищете службы, которые не нуждаются в паролях.
Бен С

Я понимаю, что он хотел, чтобы пароль SMB не был моим корневым паролем, они, вероятно, были одинаковыми, но да, мои акции ограничены пулом IP-адресов не dhcp, но нет пароля
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

В версии 4 Самбы nmblookup '*'больше не работает; это дает только локальный сервер. Раньше работал в версии 3 Самбы.

Теперь вы должны использовать nmblookup WORKGROUP, который, как упоминал Курт, возвращает только серверы в рабочей группе WORKGROUP.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.