Je n'ai pas d'imprimante AirPrint sur mon réseau. Et je n'ai jamais joué avec une imprimante non plus...
Je ne peux pas faire de test avec un vrai appareil AirPrint à proximité pour le moment.
Mais voici comment je peux lister toutes les IPP -Les imprimantes activées (dans ce cas, elles sont toutes connectées via CUPS) :
Tout d'abord, recherchez les services découvrables DNS-SD (tous types confondus) :
kp@zdv-wireless-43-219:> dns-sd -B \_services.\_dns-sd.\_udp local.
Browsing for \_services.\_dns-sd.\_udp.local.
DATE: ---Fri 20 May 2016---
23:54:37.797 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
23:54:37.798 Add 3 4 . \_tcp.local. \_ssh
23:54:37.798 Add 3 4 . \_tcp.local. \_sftp-ssh
23:54:37.798 Add 3 4 . \_tcp.local. \_airplay
23:54:37.798 Add 3 4 . \_tcp.local. \_raop
23:54:37.798 Add 3 4 . \_tcp.local. \_googlecast
23:54:37.798 Add 3 4 . \_tcp.local. \_nomachine
23:54:37.798 Add 3 4 local. \_apple-mobdev2.\_tcp. \_sub
23:54:37.798 Add 3 4 . \_tcp.local. \_apple-mobdev2
23:54:37.798 Add 3 4 . \_tcp.local. \_ipps
23:54:37.798 Add 3 4 . \_tcp.local. \_ipp
23:54:37.798 Add 3 4 . \_tcp.local. \_workstation
23:54:37.798 Add 3 4 . \_tcp.local. \_http
23:54:37.798 Add 3 4 . \_tcp.local. \_amzn-wplay
23:54:37.798 Add 3 4 . \_tcp.local. \_rfb
23:54:37.798 Add 3 4 . \_tcp.local. \_afpovertcp
23:54:37.798 Add 3 4 . \_tcp.local. \_smb
23:54:37.798 Add 3 4 . \_udp.local. \_net-assistant
23:54:37.798 Add 2 4 . \_tcp.local. \_eppc
^C
Donc, oui, il y a bien un service d'impression IPP (mais pas de service AirPrint, ce qui n'est pas toujours le cas). serait marquée par se distinguent en étant étiquetés comme Service Type of _airprint._tcp
dans la liste).
Ensuite, recherchez tous les services actuels de type "IPP" :
kp@zdv-wireless-43-219:> dns-sd -B \_ipp.\_tcp local.
Browsing for \_ipp.\_tcp.local.
DATE: ---Fri 20 May 2016---
23:54:47.782 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
23:54:47.783 Add 3 4 local. \_ipp.\_tcp. Officejet6500donna @ mbp
23:54:47.783 Add 3 4 local. \_ipp.\_tcp. raw2dir @ mbp
23:54:47.783 Add 2 4 local. \_ipp.\_tcp. Officejet 6600 @ mbp
^C
Ok, un des noms d'instance est "Officejet 6600 @ mbp" .
Troisièmement, recherchez des informations spécifiques sur l'imprimante nommée "Officejet 6600 @ mbp" :
kp@zdv-wireless-43-219:> dns-sd -L "Officejet 6600 @ mbp" \_ipp.\_tcp local.
Lookup Officejet 6600 @ mbp.\_ipp.\_tcp.local.
DATE: ---Fri 20 May 2016---
23:54:55.252 ...STARTING...
23:54:55.253 Officejet\\0326600\\032@\\032mbp.\_ipp.\_tcp.local. can be reached at mbp2-2.local.:631 (interface 4)
txtvers=1 qtotal=1 rp=printers/Officejet\_6600 ty=Unknown \\
adminurl=https://mbp2-2.local.:631/printers/Officejet\_6600 \\
note=Büro\\ im\\ Keller priority=0 product=\\(Officejet\\ 6600\\ e-All-in-One\\) \\
pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster \\
UUID=e7d11337-a440-3f2d-7168-b53de4325791 TLS=1.2 Color=T Scan=T \\
printer-state=3 printer-type=0x480900E
^C
La moitié de l'information que vous recherchez (le nom d'hôte de l'imprimante) est couverte par la phrase suivante "Officejet \0326600\032 @ \032mbp._ipp._tcp.local. peut être joint à mbp2-2.local.:631"
Cela donne le nom d'hôte (Bonjour) actuel du nœud offrant le service d'impression recherché.
Quatrièmement, recherchez les adresses IPv4 et IPv6 pour un nom d'hôte donné :
kp@zdv-wireless-43-219:> dns-sd -Gv4v6 mbp2-2.local
DATE: ---Sat 21 May 2016---
0:12:41.025 ...STARTING...
Timestamp A/R Flags if Hostname Address TTL
0:12:41.025 Add 3 4 mbp2-2.local. FE80:0000:0000:0000:AEBC:32FF:FEAE:CAEB%en0 120
0:12:41.025 Add 3 4 mbp2-2.local. FD00:0000:0000:0000:AEBC:32FF:FEAE:CAEB% 120
0:12:41.025 Add 2 4 mbp2-2.local. 192.168.177.20 120
^C
Résumé
En supposant que mon premièrement La commande a retourné quelques _airprint
disponible sur mon réseau, alors je pense que l'une des lignes renvoyées serait la suivante :
~~00:00:00.000 Add 3 4 . _tcp.local. _airprint
Ainsi, mon deuxième le commandement devrait être :
kp@zdv-wireless-43-219:> dns-sd -B _airprint._tcp local.
Je suppose que cela pourrait retourner quelque chose comme
200:00:00.000 Add 3 4 local. _airprint._tcp. Some AirPrinter @ somehost
Ensuite, mon troisième doit être lu :
kp@zdv-wireless-43-219:> dns-sd -L "Some AirPrinter @ somehost" local.
Ce qui renverrait une ligne vous disant "... peut être joint à quelque part.local.:1234 ". D'où l'on peut déduire le quatrième commandement :
kp@zdv-wireless-43-219:> dns-sd -Gv4v6 somewhere.local.
------~~
Mises en garde : La dernière partie, concernant la découverte du service AirPrint, est peut-être fausse. Il se peut que les services AirPrint s'annoncent comme les services IPP standard. Vous devez le découvrir vous-même. Si vous le faites, veuillez nous en faire part.
Mise à jour
J'ai fait quelques recherches sur Google pour trouver " _airprint._tcp
".
Je n'ai pas trouvé un seul cas où quelqu'un a rapporté dans un forum son résultat de dns-sd -B
qui énumère cette chaîne particulière.
Cependant, il y avait beaucoup, beaucoup de _airplay._tcp
y _ipp._tcp
résultats. Cela signifie que " _airprint._tcp
"ne semble pas exister, et les imprimantes AirPrint doivent utiliser une signature différente pour se faire connaître des clients potentiels. Cependant, nous savons déjà que tous les services AirPrint utilisent le protocole IPP pour communiquer avec leurs clients, et donc qu'ils utilisent également le protocole IPP pour communiquer avec leurs clients. MUST faire le _ipp._tcp
les annonces de type de service.
On peut donc conclure que...
- ...tous Les appareils AirPrint s'annoncent comme
_ipp._tcp
(pas _airprint._tcp
). Aussi, il semble que...
- ...vous pouvez identifier les périphériques AirPrint en recherchant le symbole
TXT
dossier de urf="$anything"
y pdl="$anything,image/urf"
.
Pour vérifier cela, j'ai vérifié avec quoi l'annonce (fausse) du dns-sd.org parle de son AirPrint (attention, il n'est pas en permanence sur Internet, parfois il disparaît pendant des heures...). Il renvoie bien ceci :
kp@zdv-wireless-43-219:> dns-sd -Z \_ipp.\_tcp,\_universal dns-sd.org.
Browsing for \_ipp.\_tcp,\_universal.dns-sd.org.
DATE: ---Sat 21 May 2016---
1:40:45.688 ...STARTING...
; To direct clients to browse a different domain, substitute that domain in place of '@'
lb.\_dns-sd.\_udp PTR @
; In the list of services below, the SRV records will typically reference dot-local Multicast DNS names.
; When transferring this zone file data to your unicast DNS server, you'll need to replace those dot-local
; names with the correct fully-qualified (unicast) domain name of the target host offering the service.
\_ipp.\_tcp PTR Stuart's\\032Home\\032AirPrint\\032Printer.\_ipp.\_tcp
Stuart's\\032Home\\032AirPrint\\032Printer.\_ipp.\_tcp SRV 0 0 631 airprint.dns-sd.org. ; Replace with unicast FQDN of target host
Stuart's\\032Home\\032AirPrint\\032Printer.\_ipp.\_tcp TXT "txtvers=1" "qtotal=1" "rp=ipp/printer" \\
"pdl=application/postscript,application/vnd.hp-PCL,application/vnd.hp-PCLXL,application/pdf,image/urf" \\
"URF=CP99,W8,OB10,PQ3-4-5,ADOBERGB24,DEVRGB24,DEVW8,SRGB24,IS1-2-4,MT1-2-3-5-12,MT1-2-3-5-12,RS600" \\
"ty=HP LaserJet 400 color M451nw" "product=(HP LaserJet 400 color M451nw)" \\
"priority=10" "adminurl=http://www.dns-sd.org/ServerStaticSetup.html" \\
"note=At Stuart's house" "Color=T" "Duplex=F" "Scan=F"
^C
En effet, "Stuart's Home AirPrint Printer" mentionne "URF" dans ses enregistrements TXT.
Donc, pour résumer la réponse à votre question "Comment puis-je obtenir les adresses IP de toutes les imprimantes AirPrint ?"
- Tout d'abord, dressez la liste de toutes les imprimantes IPP.
- Deuxièmement, exclure ces imprimantes IPP qui font PAS énumérer les deux mentionnés ci-dessus urf -dans leurs enregistrements TXT.
Vérifier mes déclarations
La commande suivante (minimale) annoncera un faux périphérique AirPrint dans votre LAN (jusqu'à ce que vous annuliez la commande avec ^C ) :
dns-sd \\
-R "Minimal AirPrint Demo (dummy+fake printer fooling iPad clients)" \\
\_ipp.\_tcp.,\_universal \\
. \\
631 \\
pdl="image/urf" \\
URF=""
Vos appareils iOS vont maintenant répertorier cette imprimante parmi les appareils AirPrint qu'ils ont automatiquement découverts.
(BTW, vous pouvez annoncer le port comme quelque chose de différent de 631 aussi -- les clients iOS l'identifieront toujours comme un dispositif AirPrint...)
Maintenant, répétez cette petite expérience, mais laissez l'un des deux image/urf
o URF=""
les déclarations de votre commande :
- Le faux périphérique apparaîtra toujours comme une imprimante IPP dans les listes de navigation DNS-SD/Bonjour.
- Mais les clients iOS ne répertorieront comme compatibles AirPrint que les (faux ou vrais) appareils avec les entrées liées à "URF".