我正在运行安装了avahi-daemon
and avahi-utils
(for avahi-browse
) 的 Debian Buster。现在我只想在我的家庭网络上浏览 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。(也许这是故意的,因为不能保证友好名称是稳定的或唯一的?更不用说特定于 Avahi 的了。)
您应该找出原始服务名称
-k, --no-db-lookup
,然后使用它:1我去检查了源代码,实际上它甚至没有定义反向查找函数。只有 stdb_lookup() 用于根据实际名称查询友好名称。