Hi,

On Fri Sep 02, 2011 at 13:42:57 +0100, Michael Tautschnig wrote:
[...]
> Please don't worry about the exact package, but your assessment about this 
> perl
> script being executed is fully correct. May I ask you to add additional debug
> output in 
> 
> <YOUR NFSROOT>/usr/lib/fai/dhclient-perl
> 
> via simple
> 
> print "# some output\n"
> 
> statements? All of this should end up as comments in boot.log.

ok, I added some print statements to dhclient-perl, just as you
suggested.  Unfortunately, it now prints most of the information
multiple times.

Anyway, I attached the boot.log for both cases
(nis-domain "my-NIS-Domain+01" -> nis_domain_with_plus_-_boot.log and
nis-domain "my-NIS-Domain-01" -> nis_domain_with_minus_-_boot.log).

I also attached my version of dhclient-perl as a reference on how the
boot.log files were created.

> I believe that the key point must be the test in line 65 ("if
> ($ENV{$dhcpname}) ..."), which should evaluate to true in case your
> NIS domain doesn't contain a "+", but evaluates to false otherwise.
> You might also want to print the entire contents of the %ENV hash at
> this point.
> 
It indeed looks very much like the problem occurs during the evaluation
of $ENV{$dhcpname}.  I already tried to "escape" this part, like
"$ENV{$dhcpname}" and \Q$ENV{$dhcpname}\E, but neither worked.  It even
lead to a nearly empty boot.log file, which just contained the three
"netdevices" lines.

Any ideas?

Have a nice weekend!

Cheers,
 Michael

netdevices_all="eth0"
netdevices_up="eth0"
netdevices="eth0"
# Printing ENVIRONMENT:
# ---------------------
# $envkey = 'pid'
# $ENV{$envkey} = '769'

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'reason'
# $ENV{$envkey} = 'PREINIT'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# Enf of ENVIRONMENT


# initial $ENV{new_host_name} = ''
# after 'use shot host name' $ENV{new_host_name} = ''
# $name = 'broadcast_address'
# $dhcpname was ''
# $dhcpname now is 'new_broadcast_address'
# $name = 'domain_name'
# $dhcpname was 'new_broadcast_address'
# $dhcpname now is 'new_domain_name'
# $name = 'domain_name_servers'
# $dhcpname was 'new_domain_name'
# $dhcpname now is 'new_domain_name_servers'
# $name = 'fai_action'
# $dhcpname was 'new_domain_name_servers'
# $dhcpname now is 'new_fai_action'
# $name = 'fai_config_src'
# $dhcpname was 'new_fai_action'
# $dhcpname now is 'new_fai_config_src'
# $name = 'fai_flags'
# $dhcpname was 'new_fai_config_src'
# $dhcpname now is 'new_fai_flags'
# $name = 'host_name'
# $dhcpname was 'new_fai_flags'
# $dhcpname now is 'new_host_name'
# $name = 'ip_address'
# $dhcpname was 'new_host_name'
# $dhcpname now is 'new_ip_address'
# $name = 'network_number'
# $dhcpname was 'new_ip_address'
# $dhcpname now is 'new_network_number'
# $name = 'nis_domain'
# $dhcpname was 'new_network_number'
# $dhcpname now is 'new_nis_domain'
# $name = 'nis_servers'
# $dhcpname was 'new_nis_domain'
# $dhcpname now is 'new_nis_servers'
# $name = 'ntp_servers'
# $dhcpname was 'new_nis_servers'
# $dhcpname now is 'new_ntp_servers'
# $name = 'option_170'
# $dhcpname was 'new_ntp_servers'
# $dhcpname now is 'new_option_170'
# $name = 'option_171'
# $dhcpname was 'new_option_170'
# $dhcpname now is 'new_option_171'
# $name = 'option_172'
# $dhcpname was 'new_option_171'
# $dhcpname now is 'new_option_172'
# $name = 'option_173'
# $dhcpname was 'new_option_172'
# $dhcpname now is 'new_option_173'
# $name = 'option_174'
# $dhcpname was 'new_option_173'
# $dhcpname now is 'new_option_174'
# $name = 'option_175'
# $dhcpname was 'new_option_174'
# $dhcpname now is 'new_option_175'
# $name = 'routers'
# $dhcpname was 'new_option_175'
# $dhcpname now is 'new_routers'
# $name = 'server_name'
# $dhcpname was 'new_routers'
# $dhcpname now is 'new_server_name'
# $name = 'subnet_mask'
# $dhcpname was 'new_server_name'
# $dhcpname now is 'new_subnet_mask'
# $name = 'time_servers'
# $dhcpname was 'new_subnet_mask'
# $dhcpname now is 'new_time_servers'
# Again printing the ENVIRONMENT:
# -------------------------------
# $envkey = 'pid'
# $ENV{$envkey} = '769'

# $envkey = 'new_host_name'
# $ENV{$envkey} = ''

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'reason'
# $ENV{$envkey} = 'PREINIT'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# Enf of ENVIRONMENT


# Printing ENVIRONMENT:
# ---------------------
# $envkey = 'new_domain_name_servers'
# $ENV{$envkey} = '192.168.0.11 192.168.0.12 192.168.0.13'

# $envkey = 'new_routers'
# $ENV{$envkey} = '192.168.0.1'

# $envkey = 'new_host_name'
# $ENV{$envkey} = 'demo0'

# $envkey = 'new_filename'
# $ENV{$envkey} = 'fai/pxelinux.0'

# $envkey = 'new_dhcp_message_type'
# $ENV{$envkey} = '5'

# $envkey = 'new_expiry'
# $ENV{$envkey} = '1314978363'

# $envkey = 'new_network_number'
# $ENV{$envkey} = '192.168.0.0'

# $envkey = 'new_dhcp_lease_time'
# $ENV{$envkey} = '600'

# $envkey = 'pid'
# $ENV{$envkey} = '769'

# $envkey = 'new_ntp_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# $envkey = 'new_nis_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'new_dhcp_server_identifier'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'reason'
# $ENV{$envkey} = 'BOUND'

# $envkey = 'new_ip_address'
# $ENV{$envkey} = '192.168.0.101'

# $envkey = 'new_subnet_mask'
# $ENV{$envkey} = '255.255.255.0'

# $envkey = 'new_domain_name'
# $ENV{$envkey} = 'my.network.domain'

# $envkey = 'new_server_name'
# $ENV{$envkey} = '192.168.0.10'

# $envkey = 'new_broadcast_address'
# $ENV{$envkey} = '192.168.0.255'

# Enf of ENVIRONMENT


# initial $ENV{new_host_name} = 'demo0'
# after 'use shot host name' $ENV{new_host_name} = 'demo0'
# $name = 'broadcast_address'
# $dhcpname was ''
# $dhcpname now is 'new_broadcast_address'
# $ENV{$dhcpname} = '192.168.0.255'
BROADCAST='192.168.0.255'
# $name = 'domain_name'
# $dhcpname was 'new_broadcast_address'
# $dhcpname now is 'new_domain_name'
# $ENV{$dhcpname} = 'my.network.domain'
DOMAIN='my.network.domain'
# $name = 'domain_name_servers'
# $dhcpname was 'new_domain_name'
# $dhcpname now is 'new_domain_name_servers'
# $ENV{$dhcpname} = '192.168.0.11 192.168.0.12 192.168.0.13'
DNSSRVS='192.168.0.11 192.168.0.12 192.168.0.13'
DNSSRVS_1='192.168.0.11'
DNSSRVS_2='192.168.0.12'
DNSSRVS_3='192.168.0.13'
# $name = 'fai_action'
# $dhcpname was 'new_domain_name_servers'
# $dhcpname now is 'new_fai_action'
# $name = 'fai_config_src'
# $dhcpname was 'new_fai_action'
# $dhcpname now is 'new_fai_config_src'
# $name = 'fai_flags'
# $dhcpname was 'new_fai_config_src'
# $dhcpname now is 'new_fai_flags'
# $name = 'host_name'
# $dhcpname was 'new_fai_flags'
# $dhcpname now is 'new_host_name'
# $ENV{$dhcpname} = 'demo0'
HOSTNAME='demo0'
# $name = 'ip_address'
# $dhcpname was 'new_host_name'
# $dhcpname now is 'new_ip_address'
# $ENV{$dhcpname} = '192.168.0.101'
IPADDR='192.168.0.101'
# $name = 'network_number'
# $dhcpname was 'new_ip_address'
# $dhcpname now is 'new_network_number'
# $ENV{$dhcpname} = '192.168.0.0'
NETWORK='192.168.0.0'
# $name = 'nis_domain'
# $dhcpname was 'new_network_number'
# $dhcpname now is 'new_nis_domain'
# $name = 'nis_servers'
# $dhcpname was 'new_nis_domain'
# $dhcpname now is 'new_nis_servers'
# $ENV{$dhcpname} = '192.168.0.2'
YPSRVR='192.168.0.2'
YPSRVR_1='192.168.0.2'
# $name = 'ntp_servers'
# $dhcpname was 'new_nis_servers'
# $dhcpname now is 'new_ntp_servers'
# $ENV{$dhcpname} = '192.168.0.2'
NTPSRVS='192.168.0.2'
NTPSRVS_1='192.168.0.2'
# $name = 'option_170'
# $dhcpname was 'new_ntp_servers'
# $dhcpname now is 'new_option_170'
# $name = 'option_171'
# $dhcpname was 'new_option_170'
# $dhcpname now is 'new_option_171'
# $name = 'option_172'
# $dhcpname was 'new_option_171'
# $dhcpname now is 'new_option_172'
# $name = 'option_173'
# $dhcpname was 'new_option_172'
# $dhcpname now is 'new_option_173'
# $name = 'option_174'
# $dhcpname was 'new_option_173'
# $dhcpname now is 'new_option_174'
# $name = 'option_175'
# $dhcpname was 'new_option_174'
# $dhcpname now is 'new_option_175'
# $name = 'routers'
# $dhcpname was 'new_option_175'
# $dhcpname now is 'new_routers'
# $ENV{$dhcpname} = '192.168.0.1'
GATEWAYS='192.168.0.1'
GATEWAYS_1='192.168.0.1'
# $name = 'server_name'
# $dhcpname was 'new_routers'
# $dhcpname now is 'new_server_name'
# $ENV{$dhcpname} = '192.168.0.10'
SERVER='192.168.0.10'
# $name = 'subnet_mask'
# $dhcpname was 'new_server_name'
# $dhcpname now is 'new_subnet_mask'
# $ENV{$dhcpname} = '255.255.255.0'
NETMASK='255.255.255.0'
# $name = 'time_servers'
# $dhcpname was 'new_subnet_mask'
# $dhcpname now is 'new_time_servers'
# Again printing the ENVIRONMENT:
# -------------------------------
# $envkey = 'new_domain_name_servers'
# $ENV{$envkey} = '192.168.0.11 192.168.0.12 192.168.0.13'

# $envkey = 'new_routers'
# $ENV{$envkey} = '192.168.0.1'

# $envkey = 'new_host_name'
# $ENV{$envkey} = 'demo0'

# $envkey = 'new_filename'
# $ENV{$envkey} = 'fai/pxelinux.0'

# $envkey = 'new_dhcp_message_type'
# $ENV{$envkey} = '5'

# $envkey = 'new_expiry'
# $ENV{$envkey} = '1314978363'

# $envkey = 'new_network_number'
# $ENV{$envkey} = '192.168.0.0'

# $envkey = 'new_dhcp_lease_time'
# $ENV{$envkey} = '600'

# $envkey = 'pid'
# $ENV{$envkey} = '769'

# $envkey = 'new_ntp_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# $envkey = 'new_nis_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'new_dhcp_server_identifier'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'reason'
# $ENV{$envkey} = 'BOUND'

# $envkey = 'new_ip_address'
# $ENV{$envkey} = '192.168.0.101'

# $envkey = 'new_subnet_mask'
# $ENV{$envkey} = '255.255.255.0'

# $envkey = 'new_domain_name'
# $ENV{$envkey} = 'my.network.domain'

# $envkey = 'new_server_name'
# $ENV{$envkey} = '192.168.0.10'

# $envkey = 'new_broadcast_address'
# $ENV{$envkey} = '192.168.0.255'

# Enf of ENVIRONMENT


netdevices_all="eth0"
netdevices_up="eth0"
netdevices="eth0"
# Printing ENVIRONMENT:
# ---------------------
# $envkey = 'pid'
# $ENV{$envkey} = '780'

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'reason'
# $ENV{$envkey} = 'PREINIT'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# Enf of ENVIRONMENT


# initial $ENV{new_host_name} = ''
# after 'use shot host name' $ENV{new_host_name} = ''
# $name = 'broadcast_address'
# $dhcpname was ''
# $dhcpname now is 'new_broadcast_address'
# $name = 'domain_name'
# $dhcpname was 'new_broadcast_address'
# $dhcpname now is 'new_domain_name'
# $name = 'domain_name_servers'
# $dhcpname was 'new_domain_name'
# $dhcpname now is 'new_domain_name_servers'
# $name = 'fai_action'
# $dhcpname was 'new_domain_name_servers'
# $dhcpname now is 'new_fai_action'
# $name = 'fai_config_src'
# $dhcpname was 'new_fai_action'
# $dhcpname now is 'new_fai_config_src'
# $name = 'fai_flags'
# $dhcpname was 'new_fai_config_src'
# $dhcpname now is 'new_fai_flags'
# $name = 'host_name'
# $dhcpname was 'new_fai_flags'
# $dhcpname now is 'new_host_name'
# $name = 'ip_address'
# $dhcpname was 'new_host_name'
# $dhcpname now is 'new_ip_address'
# $name = 'network_number'
# $dhcpname was 'new_ip_address'
# $dhcpname now is 'new_network_number'
# $name = 'nis_domain'
# $dhcpname was 'new_network_number'
# $dhcpname now is 'new_nis_domain'
# $name = 'nis_servers'
# $dhcpname was 'new_nis_domain'
# $dhcpname now is 'new_nis_servers'
# $name = 'ntp_servers'
# $dhcpname was 'new_nis_servers'
# $dhcpname now is 'new_ntp_servers'
# $name = 'option_170'
# $dhcpname was 'new_ntp_servers'
# $dhcpname now is 'new_option_170'
# $name = 'option_171'
# $dhcpname was 'new_option_170'
# $dhcpname now is 'new_option_171'
# $name = 'option_172'
# $dhcpname was 'new_option_171'
# $dhcpname now is 'new_option_172'
# $name = 'option_173'
# $dhcpname was 'new_option_172'
# $dhcpname now is 'new_option_173'
# $name = 'option_174'
# $dhcpname was 'new_option_173'
# $dhcpname now is 'new_option_174'
# $name = 'option_175'
# $dhcpname was 'new_option_174'
# $dhcpname now is 'new_option_175'
# $name = 'routers'
# $dhcpname was 'new_option_175'
# $dhcpname now is 'new_routers'
# $name = 'server_name'
# $dhcpname was 'new_routers'
# $dhcpname now is 'new_server_name'
# $name = 'subnet_mask'
# $dhcpname was 'new_server_name'
# $dhcpname now is 'new_subnet_mask'
# $name = 'time_servers'
# $dhcpname was 'new_subnet_mask'
# $dhcpname now is 'new_time_servers'
# Again printing the ENVIRONMENT:
# -------------------------------
# $envkey = 'pid'
# $ENV{$envkey} = '780'

# $envkey = 'new_host_name'
# $ENV{$envkey} = ''

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'reason'
# $ENV{$envkey} = 'PREINIT'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# Enf of ENVIRONMENT


# Printing ENVIRONMENT:
# ---------------------
# $envkey = 'new_domain_name_servers'
# $ENV{$envkey} = '192.168.0.11 192.168.0.12 192.168.0.13'

# $envkey = 'new_routers'
# $ENV{$envkey} = '192.168.0.1'

# $envkey = 'new_host_name'
# $ENV{$envkey} = 'demo0'

# $envkey = 'new_filename'
# $ENV{$envkey} = 'fai/pxelinux.0'

# $envkey = 'new_dhcp_message_type'
# $ENV{$envkey} = '5'

# $envkey = 'new_expiry'
# $ENV{$envkey} = '1314974902'

# $envkey = 'new_network_number'
# $ENV{$envkey} = '192.168.0.0'

# $envkey = 'new_dhcp_lease_time'
# $ENV{$envkey} = '600'

# $envkey = 'pid'
# $ENV{$envkey} = '780'

# $envkey = 'new_ntp_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# $envkey = 'new_nis_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'new_dhcp_server_identifier'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'reason'
# $ENV{$envkey} = 'BOUND'

# $envkey = 'new_ip_address'
# $ENV{$envkey} = '192.168.0.101'

# $envkey = 'new_subnet_mask'
# $ENV{$envkey} = '255.255.255.0'

# $envkey = 'new_domain_name'
# $ENV{$envkey} = 'my.network.domain'

# $envkey = 'new_nis_domain'
# $ENV{$envkey} = 'my-NIS-Domain-01'

# $envkey = 'new_server_name'
# $ENV{$envkey} = '192.168.0.10'

# $envkey = 'new_broadcast_address'
# $ENV{$envkey} = '192.168.0.255'

# Enf of ENVIRONMENT


# initial $ENV{new_host_name} = 'demo0'
# after 'use shot host name' $ENV{new_host_name} = 'demo0'
# $name = 'broadcast_address'
# $dhcpname was ''
# $dhcpname now is 'new_broadcast_address'
# $ENV{$dhcpname} = '192.168.0.255'
BROADCAST='192.168.0.255'
# $name = 'domain_name'
# $dhcpname was 'new_broadcast_address'
# $dhcpname now is 'new_domain_name'
# $ENV{$dhcpname} = 'my.network.domain'
DOMAIN='my.network.domain'
# $name = 'domain_name_servers'
# $dhcpname was 'new_domain_name'
# $dhcpname now is 'new_domain_name_servers'
# $ENV{$dhcpname} = '192.168.0.11 192.168.0.12 192.168.0.13'
DNSSRVS='192.168.0.11 192.168.0.12 192.168.0.13'
DNSSRVS_1='192.168.0.11'
DNSSRVS_2='192.168.0.12'
DNSSRVS_3='192.168.0.13'
# $name = 'fai_action'
# $dhcpname was 'new_domain_name_servers'
# $dhcpname now is 'new_fai_action'
# $name = 'fai_config_src'
# $dhcpname was 'new_fai_action'
# $dhcpname now is 'new_fai_config_src'
# $name = 'fai_flags'
# $dhcpname was 'new_fai_config_src'
# $dhcpname now is 'new_fai_flags'
# $name = 'host_name'
# $dhcpname was 'new_fai_flags'
# $dhcpname now is 'new_host_name'
# $ENV{$dhcpname} = 'demo0'
HOSTNAME='demo0'
# $name = 'ip_address'
# $dhcpname was 'new_host_name'
# $dhcpname now is 'new_ip_address'
# $ENV{$dhcpname} = '192.168.0.101'
IPADDR='192.168.0.101'
# $name = 'network_number'
# $dhcpname was 'new_ip_address'
# $dhcpname now is 'new_network_number'
# $ENV{$dhcpname} = '192.168.0.0'
NETWORK='192.168.0.0'
# $name = 'nis_domain'
# $dhcpname was 'new_network_number'
# $dhcpname now is 'new_nis_domain'
# $ENV{$dhcpname} = 'my-NIS-Domain-01'
YPDOMAIN='my-NIS-Domain-01'
# $name = 'nis_servers'
# $dhcpname was 'new_nis_domain'
# $dhcpname now is 'new_nis_servers'
# $ENV{$dhcpname} = '192.168.0.2'
YPSRVR='192.168.0.2'
YPSRVR_1='192.168.0.2'
# $name = 'ntp_servers'
# $dhcpname was 'new_nis_servers'
# $dhcpname now is 'new_ntp_servers'
# $ENV{$dhcpname} = '192.168.0.2'
NTPSRVS='192.168.0.2'
NTPSRVS_1='192.168.0.2'
# $name = 'option_170'
# $dhcpname was 'new_ntp_servers'
# $dhcpname now is 'new_option_170'
# $name = 'option_171'
# $dhcpname was 'new_option_170'
# $dhcpname now is 'new_option_171'
# $name = 'option_172'
# $dhcpname was 'new_option_171'
# $dhcpname now is 'new_option_172'
# $name = 'option_173'
# $dhcpname was 'new_option_172'
# $dhcpname now is 'new_option_173'
# $name = 'option_174'
# $dhcpname was 'new_option_173'
# $dhcpname now is 'new_option_174'
# $name = 'option_175'
# $dhcpname was 'new_option_174'
# $dhcpname now is 'new_option_175'
# $name = 'routers'
# $dhcpname was 'new_option_175'
# $dhcpname now is 'new_routers'
# $ENV{$dhcpname} = '192.168.0.1'
GATEWAYS='192.168.0.1'
GATEWAYS_1='192.168.0.1'
# $name = 'server_name'
# $dhcpname was 'new_routers'
# $dhcpname now is 'new_server_name'
# $ENV{$dhcpname} = '192.168.0.10'
SERVER='192.168.0.10'
# $name = 'subnet_mask'
# $dhcpname was 'new_server_name'
# $dhcpname now is 'new_subnet_mask'
# $ENV{$dhcpname} = '255.255.255.0'
NETMASK='255.255.255.0'
# $name = 'time_servers'
# $dhcpname was 'new_subnet_mask'
# $dhcpname now is 'new_time_servers'
# Again printing the ENVIRONMENT:
# -------------------------------
# $envkey = 'new_domain_name_servers'
# $ENV{$envkey} = '192.168.0.11 192.168.0.12 192.168.0.13'

# $envkey = 'new_routers'
# $ENV{$envkey} = '192.168.0.1'

# $envkey = 'new_host_name'
# $ENV{$envkey} = 'demo0'

# $envkey = 'new_filename'
# $ENV{$envkey} = 'fai/pxelinux.0'

# $envkey = 'new_dhcp_message_type'
# $ENV{$envkey} = '5'

# $envkey = 'new_expiry'
# $ENV{$envkey} = '1314974902'

# $envkey = 'new_network_number'
# $ENV{$envkey} = '192.168.0.0'

# $envkey = 'new_dhcp_lease_time'
# $ENV{$envkey} = '600'

# $envkey = 'pid'
# $ENV{$envkey} = '780'

# $envkey = 'new_ntp_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'PWD'
# $ENV{$envkey} = '/'

# $envkey = 'interface'
# $ENV{$envkey} = 'eth0'

# $envkey = 'new_nis_servers'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'new_dhcp_server_identifier'
# $ENV{$envkey} = '192.168.0.2'

# $envkey = 'reason'
# $ENV{$envkey} = 'BOUND'

# $envkey = 'new_ip_address'
# $ENV{$envkey} = '192.168.0.101'

# $envkey = 'new_subnet_mask'
# $ENV{$envkey} = '255.255.255.0'

# $envkey = 'new_domain_name'
# $ENV{$envkey} = 'my.network.domain'

# $envkey = 'new_nis_domain'
# $ENV{$envkey} = 'my-NIS-Domain-01'

# $envkey = 'new_server_name'
# $ENV{$envkey} = '192.168.0.10'

# $envkey = 'new_broadcast_address'
# $ENV{$envkey} = '192.168.0.255'

# Enf of ENVIRONMENT


#! /usr/bin/perl

# $Id$
#*********************************************************************
#
# dhclient-perl -- perl script that prints out DHCP data
#
# This script is part of FAI (Fully Automatic Installation)
# Copyright (c) 2000-2006 by Thomas Lange, Universitaet zu Koeln
#
#*********************************************************************
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING. If not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA.
#*********************************************************************

# TODO: extract search info from DOMAIN

# map dhcp names to bootp names
%names = qw/
  ip_address              IPADDR
  host_name               HOSTNAME
  network_number          NETWORK
  subnet_mask             NETMASK
  broadcast_address       BROADCAST
  routers                 GATEWAYS
  domain_name             DOMAIN
  domain_name_servers     DNSSRVS
  server_name             SERVER
  time_servers            TIMESRVS
  ntp_servers             NTPSRVS
  nis_domain              YPDOMAIN
  nis_servers             YPSRVR
  fai_config_src          FAI_CONFIG_SRC
  fai_action              FAI_ACTION
  fai_flags               FAI_FLAGS
  option_170              FAI_CONFIG_SRC
  option_171              FAI_ACTION
  option_172              FAI_FLAGS
  option_173              reserved173
  option_174              reserved174
  option_175              reserved175
/;

# first of all, we want to see all ENV
print "# Printing ENVIRONMENT:\n# ---------------------\n";
foreach $envkey (keys %ENV) {
        print "# \$envkey = '$envkey'\n";
        print "# \$ENV\{\$envkey\} = '$ENV{$envkey}'\n\n";
}
print "# Enf of ENVIRONMENT\n\n\n";

# these lists should also be listed as single items
@list = qw/domain_name_servers routers time_servers ntp_servers nis_servers/;
%listitem = map { $_ => 1 } @list;

print "# initial \$ENV\{new_host_name\} = '$ENV{new_host_name}'\n";

# use short host name
$ENV{new_host_name} = (split '\.',$ENV{new_host_name})[0];

print "# after 'use shot host name' \$ENV\{new_host_name\} = 
'$ENV{new_host_name}'\n";

foreach $name (sort keys %names) {
  print "# \$name = '$name'\n";
  print "# \$dhcpname was '$dhcpname'\n";
  $dhcpname="new_$name";
  print "# \$dhcpname now is '$dhcpname'\n";
  if ("$ENV{$dhcpname}") {
    print "# \$ENV\{\$dhcpname\} = '$ENV{$dhcpname}'\n";
    print "$names{$name}='$ENV{$dhcpname}'\n";
    items($name) if $listitem{$name};
  }
}

# now we want to see all ENV after we grabbed all info from bootp/dhcp
print "# Again printing the ENVIRONMENT:\n# -------------------------------\n";
foreach $envkey (keys %ENV) {
        print "# \$envkey = '$envkey'\n";
        print "# \$ENV\{\$envkey\} = '$ENV{$envkey}'\n\n";
}
print "# Enf of ENVIRONMENT\n\n\n";

exit 0;


# - - - - - - - - - - - - - - - - - - - - -
sub items {
  my $key = shift;
  my $i = 1;
    foreach (split /\s+/,$ENV{"new_$key"}){
      print "$names{$key}_$i='$_'\n";
      $i++;
    }
}

Attachment: signature.asc
Description: Digital signature

Reply via email to