Список всех сетевых принтеров (включая те, которые не установлены)

9

Можно легко перечислить принтеры, которые вы уже установили с помощью этой команды:

lpstat -a

Однако в этом списке нет сетевых принтеров, которые вы НЕ установили.

Nmap проверит все открытые порты в локальной сети, но полученный список не будет ограничен сетевыми принтерами:

sudo nmap -sT 192.168.0.1-254

Есть ли команда, которая делает следующее:

  1. Определяет локальную сеть, к которой вы сейчас подключены, автоматически.
  2. Сканирует всю локальную сеть в поисках сетевых принтеров.
  3. Создает список сетевых принтеров с указанием их имен хостов и IP-адресов.

Например, сегодня я вошел в веб-интерфейс принтера Imagistics fx2100. Он имел функцию «Найти устройство», которая была способна найти все сетевые принтеры в локальной сети (см. Скриншот ниже). Похоже, в Linux была бы команда, которая могла бы получить тот же список и информацию (без сценариев):

введите описание изображения здесь

Lonniebiz
источник
2
Проблема здесь в том, что критерии («Сетевой принтер») - это то, что имеет смысл только для людей. Компьютерные программы не будут иметь четкого смысла этой идеи. Вы можете попытаться выполнить сетевой опрос для IP-адресов, которые успешно подключаются к порту JetDirect (tcp / 9100). Список, вероятно, все еще будет неполным в случае принтеров, отличных от JetDirect, таких как настольные принтеры, совместно используемые по SMB.
Братчли
1
Как вы упоминаете, программа может сканировать открытые порты каждого IP-адреса в локальной сети и даже немного общаться с этими портами для сбора данных. Я понимаю, как это можно сделать. Я просто не знаю ни о какой утилите командной строки, которая уже делает это (особенно для принтеров).
Lonniebiz
1
Вы можете выполнить поиск, чтобы найти список действительных IP-адресов и использовать его ncдля проверки возможности подключения tcp/9100. Вам нужно что-то написать, так как это очень специфическая проблема, которую вы пытаетесь решить. Поэтому я сомневаюсь, что кто-то написал инструмент для этого.
Братчли

Ответы:

3

Нет программы, которая делает это специально, но с помощью nmap -A(расширенного обнаружения хоста / снятия отпечатков пальцев) может быть в состоянии идентифицировать большинство принтеров. Вы должны будете фильтровать это после.

Пока
источник
11

Если avahi-демон запущен,

avahi-browse -a | grep Printer
infoclogged
источник
Эта avahi-browse -aкоманда, кажется, перечисляет одни и те же принтеры несколько раз и (даже с --allаргументом) пропускает соответствующую информацию, показанную на снимке экрана выше (например, IP-адрес принтера, который она отображает). Меня удивляет, что этот «принтер Imagistics fx2100» содержит прошивку, которая превосходит все утилиты Linux, которые я видел, когда дело доходит до перечисления всех принтеров всех марок (которые даже не установлены, но обеспечивают сетевую печать).
Lonniebiz