使用 avahi-browse 仅浏览“UNIX 打印机”

使用 avahi-browse 仅浏览“UNIX 打印机”

我正在运行安装了avahi-daemonavahi-utils的Debian Buster avahi-browse。现在我只想浏览家庭网络上的 UNIX 打印机。如果我浏览所有服务,我会找到我的打印机:

~$ avahi-browse -at
+   ens1 IPv4 printer living room       Internet Printer     local
+   ens1 IPv4 printer living room       PDL Printer          local
+   ens1 IPv4 printer living room       UNIX Printer         local
+   ens1 IPv4 printer living room       _scanner._tcp        local
+   ens1 IPv4 printer living room       Web Site             local
+   ens1 IPv4 printer living room       _privet._tcp         local

现在我正在浏览一种服务类型:

~$ avahi-browse -t _scanner._tcp
+   ens1 IPv4 printer living room       _scanner._tcp        local

可以工作,但是存在UNIX Printer如下服务类型问题:

~$ avahi-browse -t UNIX Printer
Too many arguments
~$ avahi-browse -t "UNIX Printer"
avahi_service_browser_new() failed: Invalid service type
~$ avahi-browse -t 'UNIX Printer'
avahi_service_browser_new() failed: Invalid service type
~$ avahi-browse -t UNIX\ Printer
avahi_service_browser_new() failed: Invalid service type

UNIX Printer包含在服务类型数据库中:

~$ avahi-browse -b | grep "UNIX Printer"
UNIX Printer

为什么我无法使用服务类型数据库中的友好名称来浏览单个服务?

答案1

因为在这种情况下,程序不是为反向查找友好名称而编写的1。 (也许这是故意的,因为友好名称不能保证稳定或唯一?更不用说 Avahi 特定的了。)

您应该找出原始服务名称-k, --no-db-lookup,然后使用它:

avahi-browse _printer._tcp

1我去检查了源代码,它实际上甚至没有定义反向查找函数。只有 stdb_lookup() 用于根据实际名称查询友好名称。

相关内容