xcat-core/xCAT/postscripts/confignimsh
immarvin d88759f805 add return value
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@14402 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2012-11-22 08:58:21 +00:00

94 lines
2.3 KiB
Perl
Executable File

#!/usr/bin/perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
#(C)IBM Corp
#-----------------------------------------------------------------------------
=head1 confignimsh
This sample customization script can be used to automatically configure
the NIM nimsh (NIM service handler). It will also configure NIMSH to
use OpenSSL in the NIM environment.
It assumes that the openssl software has already been installed on the
node.
This script also assumes that you have run "nimconfig -c" on the NIM
master for the nodes.
This script should only be run on AIX standalone (diskfull) cluster compute
nodes. It should NOT be run on the xCAT management node, service nodes or
diskless nodes.
Note: This script will also remove the .rhosts file (actually back it up).
If you don't want it removed then comment out those lines.
=cut
#-----------------------------------------------------------------------------
use Socket;
# this script gets run from an xCAT post script that sets the MASTER and NODE
# environment variables.
# NIM needs the short hostnames
#get short hostname for master
my $master = $ENV{'MASTER'};
my $mhost;
my $shortmaster;
my $returnval=0;
if ($master =~ /\d+\.\d+\.\d+\.\d+/)
{
my $packedaddr = inet_aton($master);
$mhost = gethostbyaddr($packedaddr, AF_INET);
} else {
$mhost = $master;
}
($shortmaster = $mhost) =~ s/\..*$//;
chomp $shortmaster;
# get short hostname for node
my $name = $ENV{'NODE'};
my $nhost;
my $shortname;
if ($name =~ /\d+\.\d+\.\d+\.\d+/)
{
my $packedaddr = inet_aton($name);
$nhost = gethostbyaddr($packedaddr, AF_INET);
} else {
$nhost = $name;
}
($shortname = $nhost) =~ s/\..*$//;
chomp $shortname;
# save off the existing niminfo file
if (-f "/etc/niminfo") {
runcmd("mv /etc/niminfo /etc/niminfo.bak");
}
# create new niminfo file and start nimsh daemon etc.
runcmd("niminit -a name=$shortname -a master=$shortmaster -a connect='nimsh'");
# configure nimsh to use ssl
runcmd("nimclient -c");
# get rid of the .rhost - ????
if (-f "/.rhosts") {
runcmd("mv /.rhost /.rhost.orig");
}
exit $returnval;
sub runcmd {
my $cmd = shift @_;
$cmd .= ' 2>&1';
my @output = `$cmd`;
my $rc = $? >> 8;
if ($rc) {
system("logger -t xcat -p local4.err 'confignimsh: command $cmd failed with rc $rc: " . join('',@output) . "'");
$returnval=$rc;
exit $rc;
}
}