Я установил сетевой принтер на своей машине Ubuntu 14.04 с помощью system-config-printer
. Эта программа с графическим интерфейсом предлагает функцию "Найти сетевой принтер", которая исследует локальную сеть. Она возвращает список имен принтеров, связанных с IP-адресами.
Допустим, я выбрал один вариант и успешно его установил.
Теперь, через некоторое время, я понимаю, что тот, который я установил, не тот принтер. Поэтому я повторяю процесс снова, и... о, подождите, есть несколько принтеров одного типа (и имени), с разными IP-адресами!
Ладно, без проблем, давайте просто проверим IP того, что я только что установил, чтобы убедиться, что я не установлю снова неправильный. Итак, вопрос:как узнать IP установленного принтера?
Судя по всему, диалоговое окно «Свойства» (пример ниже) не дает доступа к этой информации (нет, она не скрыта в строке URI).
Никакого успеха не принесло и использование веб-сервера CUPS через http://localhost:631
, похоже, что это по сути другой способ получения той же информации.
Редактировать: вопрос не относится к принтеру ниже, а носит более общий характер: поскольку ОС может получить IP-адрес принтера на этапе исследования сети, я предполагаю, что эта информация где-то хранится.Где он хранится и как к нему получить доступ?Или, может быть, он нигде не хранится?
решение1
Расширяется наРешение @JUH выше...
avahi-browse --all -t -r
Является правильным решением для принтеров с функцией автообнаружения.
К сожалению, многие принтеры просто не раскрывают свой IP-адрес в какой-либо пригодной для использования форме вам, конечному пользователю. Это сделано намеренно.https://www.cups.org/doc/network.html
Большинство сетевых принтеров поддерживают протокол, известный как Bonjour, который представляет собой комбинацию стандартов сетей с нулевой конфигурацией (
ZeroConf
), многоадресной DNS (mDNS
) и обнаружения служб DNS (DNS-SD
), опубликованных IETF (Internet Engineering Task Force), той же группой, которая определила TCP/IP и все сетевые технологии, которые мы используем сегодня.
Цитирую страницу mDNS:
Когда клиенту mDNS необходимо разрешить имя хоста, он отправляет сообщение запроса IP multicast, в котором хосту с таким именем предлагается идентифицировать себя. Затем эта целевая машина отправляет сообщение multicast, включающее его IP-адрес. Все машины в этой подсети могут затем использовать эту информацию для обновления своих кэшей mDNS. Любой хост может отказаться от своего требования имени, отправив ответный пакет со временем жизни (
TTL
), равным нулю.
Таким образом, чтобы правильно найти IP-адрес принтера mDNS, вам понадобится инструмент, способный читать кэш.
Цитирую один из комментариев ОП:
Спасибо. В моем случае,
lpoptions
действительно показывает много информации, но не IP. Соответствующее поле выглядит какdevice-uri=hp:/net/hp_LaserJet_2420?zc=HP2420ROOMXXX
, так что опять же то же самое, что я получаю от инструментов GUI. Поэтому я предполагаю, что IP не хранится на моей машине...
Это avahi-browse
лучший инструмент для работы... (или если вы пришли сюда в поисках утилиты для Mac, Apple предлагает одну под названием dns-sd
)
Цитируя страницу Avahi:
Avahi — это система, которая облегчает обнаружение сервисов в локальной сети через набор протоколов mDNS/DNS-SD. Это позволяет вам подключить свой ноутбук или компьютер к сети и мгновенно увидеть других людей, с которыми вы можете общаться, найти принтеры для печати или найти файлы, которыми вы делитесь. Совместимая технология есть в Apple MacOS X (под брендом «Bonjour» и иногда «Zeroconf»).
Avahi в первую очередь ориентирован на системы Linux и поставляется по умолчанию в большинстве дистрибутивов. На данном этапе он не портирован на Windows, но будет работать на многих других системах типа BSD. Основным API является D-Bus, он требуется для использования большинства Avahi, однако службы могут быть опубликованы с использованием определения службы XML, размещенного в
/etc/avahi/services
.См. также
nss-mdns
проект, который позволяет выполнять поиск имени хоста для имен хостов *.local через mDNS во всех системных программах с помощью nsswitch.
решение2
С использованиемlpoptions
lpoptions -p <printer_name> | awk '{for (i=1; i<=NF; i++) {if ($i ~ /device-uri/) {print $i}}}'
Пример
$ lpoptions -p TOSHIBA_e-STUDIO2330C | awk '{for (i=1; i<=NF; i++) {if ($i ~ /device-uri/) {print $i}}}'
device-uri=socket://192.168.20.43
Чтобы получить обзорlpinfo
Пример
$ lpinfo -v | grep -P '://'
network dnssd://HP%20LaserJet%201022n._pdl-datastream._tcp.local/
network dnssd://TOSHIBA%20e-STUDIO2540C-07279076._printer._tcp.local/
network socket://192.168.20.201
network socket://192.168.20.203
network socket://192.168.20.204
network socket://192.168.20.205
network socket://192.168.20.206
network socket://192.168.20.207
network socket://192.168.20.43
илиnmap
nmap -sT <adress_or_address_range>
и grep сервисprinter
Пример
$ nmap -sT 192.168.20.43
Starting Nmap 6.47 ( http://nmap.org ) at 2015-07-03 08:38 CEST
Nmap scan report for 192.168.20.43
Host is up (0.0017s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
515/tcp open printer
631/tcp open ipp
8080/tcp open http-proxy
9100/tcp open jetdirect
решение3
Согласно Руководству пользователя HP Laserjet серии 2400, IP-адрес доступен на панели управления самого принтера.
решение4
Посмотрите наarp-scan
команда(похоже на ip neigh
). Вероятно, вам придется установить его:
sudo apt-get install arp-scan
И более подробно:
sudo arp-scan --interface=eth0 --localnet
Где eth0 — ваше устройство (или wlan0 или wlp2s0). Вы можете найти свое устройство с помощью ifconfig
или:
ip -c addr
Или попробуйте установить nmap
( sudo apt-get install nmap
) и введите nmap, 192.168.1.0/24
заменив 192.168.1
первые три части вашего IP-адреса (узнайте с помощью ip addr
).