ISC dhcpd динамическое имя загрузочного файла. Это возможно?
На самом деле я хочу динамически назначить имя загрузочного файла на основе клиентов MAC.
Я попробовал этот конфиг:
option bootfile-name concat( binary-to-ascii(16, 8, "", substring (hardware, 1, 6)), ".cfg");
Но это неверный конфиг (так как сервер dhcp вообще не запускается). Если вместо concat(...) я поставлю просто реальное имя файла (например, "000102030405.cfg"), то все в порядке. Но это не то, что мне нужно. Есть ли способ динамически установить имя загрузочного файла?
2 ответа
Ну, хорошие новости. Я нашел ответ сам. Сам ответ был на страницах руководства. Все, что вам нужно, это использовать ВЫРАЖЕНИЯ. Это верно для любой опции (не только bootfile-name), которой вы хотите присвоить значение из запроса клиента.
От man dhcp-options
:
SETTING OPTION VALUES USING EXPRESSIONS
Sometimes it's helpful to be able to set the value of a DHCP option based on
some value that the client has sent. To do this, you can use expression
evaluation. The dhcp-eval(5) manual page describes how to write expressions.
To assign the result of an evaluation to an option,
define the option as follows:
option my-option = expression ;
For example:
option hostname = binary-to-ascii (16, 8, "-", substring (hardware, 1, 6));
Итак, как видите, единственное различие между этим кодом и моим - знак равенства!
Для любопытных ответ на мой вопрос:
option bootfile-name = concat( binary-to-ascii(16, 8, "",
substring (hardware, 1, 6)), ".cfg");
Вы заметили "="?
110022334455 становится 11022334455 в выводе ASCII