#!/usr/bin/env perl # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html BEGIN { use Time::HiRes qw(sleep); $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat'; my $sleepint=int(rand(10)); #Stagger start to avoid overwhelming conserver/xCATd print "Opening console in ".(2+(0.5*$sleepint))." seconds...\n"; sleep $sleepint; } use lib "$::XCATROOT/lib/perl"; $ENV{HOME}='/root/'; require xCAT::Client; #require xCAT::Table; #require xCAT::Utils; require File::Basename; import File::Basename; my $scriptname = $0; #$mptab = xCAT::Table->new('mp'); #unless ($mptab) { #sleep 5; #Try not to overwhelm logfiles... # die "mp table must be configured"; #} #$mpatab = xCAT::Table->new('mpa'); #$passtab = xCAT::Table->new('passwd'); my $username = "USERID"; my $passsword = "PASSW0RD"; my $mm; my $slot; #my $dba; #if ($passtab) { # ($dba) = $passtab->getAttribs({key=>blade},qw(username password)); # if ($dba->{username}) { # $username = $dba->{username}; # } # if ($dba->{password}) { # $password = $dba->{password}; # } #} #$dba = $mptab->getNodeAttribs($ARGV[0],[qw(mpa id)]); #$mm = $dba->{mpa}; #$slot = $dba->{id}; #if ($mpatab) { # ($dba) = $mpatab->getAttribs({mpa=>$mm},qw(username password)); # if ($dba) { # if ($dba->{username}) { $username = $dba->{username}; } # if ($dba->{password}) { $password = $dba->{password}; } # } #} #xCAT::Utils::close_all_dbhs; #sleep 5; #Slow start, I know, but with exec, can't return sub getans { my $rsp = shift; if ($rsp->{node}) { $mm = $rsp->{node}->[0]->{mm}->[0]; $username = $rsp->{node}->[0]->{username}->[0]; $slot = $rsp->{node}->[0]->{slot}->[0]; } } my $cmdref={ command=>"getbladecons", arg=>"text", noderange=>$ARGV[0] }; xCAT::Client::submit_request($cmdref,\&getans); until ($mm and $username and $slot) { print "console not ready\n"; sleep 5+int(rand(10)); xCAT::Client::submit_request($cmdref,\&getans); } exec "ssh -t $username"."@"."$mm console -o -T blade[$slot]"; #my $pathtochild= dirname($scriptname). "/"; #exec $pathtochild."blade.expect $mm $slot $username $password"; #SECURITY: In this case, the authentication is expected to be done using the script user's ssh keys. As such, #this script does not receive any particularly sensitive data from the xCAT server.