Last modified 5 years ago Last modified on 05/05/09 14:06:33
This is another script that can be used to set the machines name (Similar to [SetComputerNameByDhcpScript]), based on whatever the reverse DNS hostname of the IP address is. (It should go in site/config.pl)
If the script can't successfully retrieve a hostname for the IP address, it will take whatever is in the unattended.txt file, and append the last section of the IP address to it - this helps to prevent duplicate machine names if we are rolling out multiple machines.
use warnings; use strict; use Socket; use Net::hostent; my $default_computer_name = $u->{'UserData'}->{'ComputerName'}; my $ip_address = $u->{'_meta'}->{'ipaddr'}; my $host = gethostbyaddr (inet_aton ($ip_address)); if (!defined $host) { $ip_address =~ m/^(([0-9]+).([0-9]+).([0-9]+).([0-9]+))/; my $default_name = $default_computer_name . $5; print "WARNING: Couldn't set computer name from hostname.\nComputer name set to \"$default_name\"\n"; $u->{'UserData'}->{'ComputerName'} = $default_name; } else { my $name = $host->name (); $name =~ m/^(([A-Z]|[a-z]|[0-9]|-)+)(\..*)/; my $hostname = $1; print "Computer name set to \"$hostname\"\n"; $u->{'UserData'}->{'ComputerName'} = $hostname; }
I'm not really a coder, but I have tested it, and it seems to work fine for me! Hope it's usefult to somone!
-- Geoff Kendal - geoffatsquiggledotorg