Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
executable file 115 lines (88 sloc) 2.46 KB
#!/usr/bin/perl -w
# -*- mode: perl; cperl-continued-brace-offset: -4; indent-tabs-mode: nil; -*-
# vim:shiftwidth=2:tabstop=8:expandtab:textwidth=78:softtabstop=4:ai:
# $Id$
#
# 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 3 of the License.
#
# 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. If not, see <http://www.gnu.org/licenses/>.
#
# (C) Copyright Ticketmaster, Inc. 2007
#
use strict;
use lib qw(/usr/lib/spine-mgmt);
use Getopt::Long;
use Spine::Util;
my %options;
GetOptions(
\%options,
'hostname=s'
);
my $cmdline_hostname = $options{hostname};
my $DIALOG = qq(/usr/bin/dialog);
my $VMCMD = qq(/usr/local/vmware-tools/sbin/vmware-guestd);
while (1)
{
my $hostname = get_hostname();
my $pass_regex = check_hostname($hostname);
my $does_resolve = Spine::Util::resolve_address($hostname);
unless ($pass_regex)
{
msgbox_error("Invalid hostname format \[$hostname\]");
next;
}
unless ($does_resolve)
{
msgbox_error("Could not resolve \[$hostname\]");
next;
}
print "NEWHOSTNAME=" . $hostname . "\n";
last;
}
sub get_hostname
{
my $hostname;
my $dialogcmd = "$DIALOG --stdout --nocancel "
. "--inputbox \"Hostname\" 9 55";
# Try three different methods for determining the hostname:
# user supplied via command line, whether we are a VM
# in which case we ask the host server, or prompt the
# user via dialog box.
open(LSPCI, "/sbin/lspci |");
if ($cmdline_hostname)
{
$hostname = $cmdline_hostname;
$cmdline_hostname = undef;
}
elsif ( grep(/VMware Inc/i, <LSPCI>) && (-x "$VMCMD") )
{
$hostname = `$VMCMD --cmd machine.id.get 2>/dev/null`;
if ($? > 0 ) { $hostname = `$dialogcmd`; }
}
else
{
$hostname = `$dialogcmd`;
}
$hostname = lc($hostname);
close(LSPCI);
return $hostname;
}
sub check_hostname
{
return 1;
}
sub msgbox_error
{
my $errormsg = shift;
my $dialogcmd = "$DIALOG --stdout --msgbox \"$errormsg\" 6 55";
`$dialogcmd`;
return 1;
}
Something went wrong with that request. Please try again.