Я запускаю Raspbian на связке Raspberry Pis. У каждого из них есть уникальное имя хоста, установленное в /etc/hostname
и клиент dhcp правильно регистрирует это имя на моем маршрутизаторе.
Проблема, с которой я сталкиваюсь, связана с тем, что эти Pis подключены к одной сети, а затем к тому же DHCP-серверу через Ethernet. и WiFi - существует состояние, похожее на гонку, которое означает, что остальная часть сети при использовании имен для адресации этих Pis не может детерминированно отдавать предпочтение соединениям Ethernet над 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");
}
Как и в связанных option
оператор, вы должны явно отмечать выражения, используя =
подписать:
send host-name "static-value";
send host-name = concat(gethostname(), "dynamic-value");
Если вы вызываете dhclient в подробном режиме (dhclient -cf myconfig.conf -v
) он сообщит вам о синтаксической ошибке, которую в противном случае игнорирует.