我正在运行安装了avahi-daemon
和avahi-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() 用于根据实际名称查询友好名称。