我在一堆 Raspberry Pi 上运行 Raspbian。它们每个都设置了唯一的主机名/etc/hostname
,并且 dhcp 客户端正确地将该名称注册到我的路由器。
我遇到的问题源于这些 Pis 通过以太网连接到同一个网络,然后连接到同一个 DHCP 服务器和WiFi——存在一种类似竞争的状况,这意味着网络的其余部分在使用名称来寻址这些 Pi 时,无法确定性地选择以太网连接而不是 WiFi。
我想让 Pis 在根据它们所连接的接口获取租约时向网络 DHCP 服务器报告不同的主机名。这似乎可以通过在 中添加如下几行静态方式实现/etc/dhcp/dhclient.conf
。
interface "wlan0" {
send host-name "MyHostname-1234-WiFi";
}
我想要解决的问题是如何以编程方式定义该行。如下所示:
interface "wlan0" {
send host-name "<hostname>-WiFi";
}
查看 的文档dhclient.conf(5)
,它建议我可以使用concat
中的函数dhcp-eval(5)
,但我没有成功。我正在尝试这个:
interface "wlan0" {
send host-name concat(gethostname(), "-WiFi");
}
答案1
就像在相关option
语句中一样,您必须使用符号明确标记表达式=
:
send host-name "static-value";
send host-name = concat(gethostname(), "dynamic-value");
如果您以详细模式 ( dhclient -cf myconfig.conf -v
) 调用 dhclient,它会告诉您语法错误,否则它会默默忽略。