【问题标题】:CUPS @LOCAL valueCUPS @LOCAL 值
【发布时间】:2012-10-30 08:15:38
【问题描述】:

我有两台机器。一个使用 CUPS 1.5.0,另一个使用 CUPS 1.6.1。两台机器在同一个本地网络上。我想要全面发现网络上的打印机。如果我运行以下命令:

CUPS_DEBUG_LEVEL=2 /usr/lib/cups/backend/snmp 2>&1

在两台机器上我得到不同的结果。带有 CUPS 1.5.0 的那个是我想要从另一台带有 CUPS 1.6.1 的机器上得到的结果。

我发现了问题! CUPS 中有一个名为@LOCAL 的变量。上面的命令等于:

CUPS_DEBUG_LEVEL=2 /usr/lib/cups/backend/snmp @LOCAL 2>&1

问题在于,在第二种情况下(CUPS 1.6.1)@LOCAL 的值是机器的本地 IP(192.168.3.69)而不是广播(192.168.3.255)。

如果我在两台机器上运行以下命令一切正常:

CUPS_DEBUG_LEVEL=2 /usr/lib/cups/backend/snmp 192.168.3.255 2>&1

请解释我如何配置@LOCAL 变量的值。或者为什么 CUPS 1.5.0 在安装时可以很好地配置它而 1.6.1 没有? (安装后我什么都没做,效果很好)

【问题讨论】:

  • 更新:使用 ifconfig 我得到第一台机器上的广播是 192.168.3.255 而在另一台机器上它是 0.0.0.0 Obvoius 现在这是一个网络配置问题。我在第二台机器上编辑了广播,它现在可以工作了。但是仍然存在一个问题:为什么我必须在第二台机器上配置广播,而不是在第一台机器上?更具体地说,在机器上:第一个发行版是 debian 挤压,第二个发行版是 debian wheezy。两者都具有静态 ip 设置,但正如我所见,在挤压中没有广播设置。

标签: local broadcast discovery cups


【解决方案1】:

首先...

...让我们弄清楚 @LOCAL 的含义:

@LOCAL 字符串并不完全是一个变量——在 CUPS 配置 (/etc/cups/cupsd.conf) 的上下文中,它被称为一个。还有更多可以使用的宏:@IF@GROUP@ACL@OWNER@SYSTEM

@LOCAL 宏在 CUPS 1.1.15 版本中被引入。相应的 CHANGELOG 条目显示:

 - The Allow, Deny, BrowseAllow, BrowseDeny, and
   BrowseAddress directives now support the network
   interface names "@LOCAL" and "@IF(name)" for access
   control and browsing based on the current interface
   addresses instead of fixed names or IP addresses.

换句话说:在将其引入 CUPS 代码库之前,您必须将主机的当前 IP 地址硬编码为 cupsd.conf。之后,您可以选择在 cupsd.conf 中改写 @LOCAL@IF(eth0)@IF(wlan1),CUPS 将使用当前 IP 地址(所有本地 IP 地址,如果该框有多个!),即使它已更改。 (PPP/拨号连接的地址不算本地IP地址...)

第二...

...让我们看看为什么您会看到差异:

如果无法访问两台机器的完整 CUPS 和网络设备配置,则无法回答问题。

可能一台服务器比另一台服务器拥有更多的网络接口和/或更多不同的 IP 地址(例如使用 eth0:1 技巧来使用额外的虚拟网络接口)。

可能还偶然发现了您机器的两个 CUPS 化身之一中的错误。

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多