/
ui
executable file
·114 lines (88 loc) · 2.46 KB
/
ui
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/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;
}