Я пытаюсь создать скрипт для получения всех IP-адресов беспроводных принтеров в сети. Проблема в том, что я не уверен, с чего начать. Я заглянул в CUPS, но каждый документ или учебное пособие только доходит до командной строки, прежде чем перейти к использованию веб-интерфейса, они никогда не упоминают, как найти IP с помощью используя только CLI, есть идеи?
2 ответа
В соответствии с этим потоком вопросов и ответов на «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»; Я не знаю точно. Это в основном идеи для мозгового штурма, которые, надеюсь, помогут вам решить эту проблему или, по крайней мере, направят вас в правильном направлении.
Как насчет 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
