2

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

2 ответа2

1

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

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

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 должен быть настроен на «printers» или «print»; Я не знаю точно. Это в основном идеи для мозгового штурма, которые, надеюсь, помогут вам решить эту проблему или, по крайней мере, направят вас в правильном направлении.

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .