Acho que você pode usar ZeroConf aqui para encontrar sua impressora dinamicamente. A sintaxe é como:
hp:/net/Officejet_6500_E710n-z?zc=printer
Lá, zc
significa ZeroConf , o mDNS implementado pelo avahi . Ao configurar esse URI, você poderá ver algum tráfego de rede multicast para consultar a impressora, como pode ser visto no tcpdump parcial abaixo.
root@ubuntu:/etc/avahi# tcpdump -vvvvvn -i wlan0 host 224.0.0.251
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
11:20:49.783337 IP (tos 0x0, ttl 255, id 0, offset 0, flags [DF], proto UDP (17), length 59)
172.25.197.98.5353 > 224.0.0.251.5353: [udp sum ok] 0 A (QM)? printer.local. (31)
11:20:49.787975 IP (tos 0x0, ttl 255, id 44750, offset 0, flags [none], proto UDP (17), length 69)
172.25.197.160.5353 > 224.0.0.251.5353: [udp sum ok] 0*- [0q] 1/0/0 printer.local. (Cache flush) [4m] A 172.25.197.160 (41)
Registros DNS A como printer.anintranet.example
podem ser adicionados a uma zona dinâmica pelo servidor DHCP. O nome de domínio original ( anintranet.example
) é descartado - possivelmente porque está na diretiva "search" de /etc/resolv.conf
? - e .local
é adicionado como parte da consulta mDNS.