Как получить IP-адреса принтеров через командную строку в Linux?

Как получить IP-адреса принтеров через командную строку в Linux?

Я пытаюсь создать скрипт для получения всех IP-адресов беспроводных принтеров в сети. Проблема в том, что я не уверен, с чего начать. Я изучал CUPS, но каждый документ или руководство заходит только до определенной степени с командной строкой, прежде чем перейти к использованию веб-интерфейса, они никогда не упоминают, как найти IP, используя только CLI, есть идеи?

решение1

Согласно этомуТема вопросов и ответов на «Unix & Linux Stack Exchange»список установленных принтеров можно получить только черезlpstat -sили используя его с sudo( sudo lpstat -s), чтобы получить полный путь к устройству. Или, может быть, используяnmap -A?

Все сказанное, возможно, используяarpсgrepиsedсоединенные вместе с помощью труб ( |), могут работать следующим образом:

arp -a | grep Printer | awk '{ print $2 }' | sed 's/[()]//g'

Эта команда выглядит следующим образом:

  • arp -aпокажет вам весь ARP-трафик.
  • grep Printerпроанализирует arp -aвывод на наличие строк, содержащих Printerв имени.
  • awk '{ print $2 }'захватывает IP-адрес, но с круглыми скобками ( (/ )).
  • sed 's/[()]//g'затем очищает IP-адрес, удаляя скобки.

Тем не менее, у меня нет простого способа проверить эту концепцию на моей локальной установке — поскольку у меня даже нет ни одного Wi-Fi-принтера в моей сети — но я предполагаю, что это сработает. Возможно, аргумент grepследует скорректировать до «принтеров» или, может быть, «печати»; я не знаю наверняка. Это в основном идеи мозгового штурма, которые, как я надеюсь, помогут вам справиться с этой проблемой или, по крайней мере, направят вас на правильный путь.

решение2

А как насчет lpinfo (нужен установленный CUPS)
(используя Perl здесь, чтобы отфильтровать остальное)
см.здесь

$ sudo lpinfo -l -v |  perl -ne 'print if /^Device: uri = socket:/ .. /info/'

Устройство: uri = socket://192.168.0.3
      класс = сетевая
      информация = Officejet серии J6400
Устройство: uri = socket://192.168.0.5:9100
      класс = сетевая
      информация = HP Officejet Pro 8610

Связанный контент