DHCLIENT.CONF系统variables

我只是一个小问题。

我的DNS服务器由我们的DHCP服务器(Microsoft Windows 2003 R2 SP2)更新。

我的客户端是Debian Linux Distro,我必须修改我的DHCLIENT.CONF文件才能发送完全限定的主机名。

但是我有大约1600台计算机,我不想逐个修改每个客户端,那么我可以例如在configuration文件中使用系统variables吗?

例:

#DHCLIENT CONF;
send "$hostname"
#DHCLIENT CONF;
send "$hostname"
,其中$ hostnamevariables是在BASHRC上为hostname -f命令写入的别名。

如果您需要更多信息,请告诉我。

dhclient的stream血边缘(4.2.x)版本通过提供一个gethostname()函数来支持这一点。

所以用最新的dhclient alpha,你可以在dhclient.conf中join这样的东西

 send host-name = gethostname(); 

Ubuntu在他们的dhclient版本中有一个可以让你做的补丁

 send host-name = "<hostname>"; 

它会用适当的主机名replace它。

Redhat为他们的dhclient补丁提供-H和-F(-H =发送主机名,-F =发送fqdn.fqdn)命令行选项。 所以在Redhat上你可以运行

 dhclient -H $(hostname) 

它会发送正确的主机名。

我不知道有什么可用的Debian – 你可能想看看修补你的dhclient与Ubuntu补丁

我想你在这里有很多不同的方法。 AFAIK,dhclient.conf不支持你列出的variables扩展。 所以这留下了两个明显的select:

  1. 脚本login到所有主机和build立configuration文件
  2. configurationpipe理(puppet / cfengine /厨师)

选项1是丑陋的,它会让你通过这个障碍,但这将是很难保持。 在你知道之前,你会经常编写脚本login到你所有的机器上,这需要很长时间,容易出错(比如你如何处理好主机,然后再回来),很难维护。

选项2.绝对是我会推荐的,我会build议傀儡比它更灵活和易于使用相对于cfengine,但相对成熟。

这是你的清单(未经testing)

 class dhcp-client { file { "/etc/dhclient.conf": content => template("dhclient.conf") } } 

和模板:

 other dhclient.conf stuff send "<%= fqdn %>" 

和节点configuration:

 node default { include dhcp-client } 

非常感谢大家(你们两个),我发现了一个巨大的工具,命名为木偶,并增加了我的脚本技能。

标题已解决。