暫無描述

Rob Austein e7b43fa419 Initial public version. 5 年之前
README.md e7b43fa419 Initial public version. 5 年之前
printer_browser.py e7b43fa419 Initial public version. 5 年之前

README.md

printer-browser.py

Small program to browse the local network for printers via Apple-flavored mDNS (Bonjour), massage the data slightly, and write it out in DNS master file format.

Changes made to the data:

  • We strip off the .local. suffix, because we want to append the local zone $ORIGIN when we drop this text into a master file.

  • We remove the adminurl property, because we don't generally want our users trying to reconfigure our printers anyway.

The target audience for this is the IETF meeting network, but this might conceivably be useful whenever trying to make AirPrint work across multiple network segments.

Most of the work is done by two external packages: zeroconf and dnspython. Both of these are available from PyPi, as well as from various OS-specific packaging systems.

In theory this code is Python-version-agnostic, and should run under either Python 2 or Python 3.

Current usage as of this writing (run with --help for latest):

usage: printer_browser.py [-h] [-q] [-o OUTPUT]
                          [--browse-timeout BROWSE_TIMEOUT]
                          [--query-timeout QUERY_TIMEOUT] [--keep-adminurl]
                          [mdns_type [mdns_type ...]]

Browse for printers on the local net, dump DNS records for inclusion in a DNS
zone in master file format.

positional arguments:
  mdns_type             mDNS types for which to browse (default:
                        ['_ipp._tcp.local.', '_pdl-datastream._tcp.local.'])

optional arguments:
  -h, --help            show this help message and exit
  -q, --quiet           omit comments from generated master file text
                        (default: False)
  -o OUTPUT, --output OUTPUT
                        where to write master file text (default: -)
  --browse-timeout BROWSE_TIMEOUT
                        timeout in seconds while browsing for printers
                        (default: 5)
  --query-timeout QUERY_TIMEOUT
                        timeout in seconds to retrieve printer data (default:
                        3)
  --keep-adminurl       keep adminurl property in generated DNS data (default:
                        False)