xcat-core/xCAT-server/share/xcat/tools/rmnodecfg

62 lines
1.4 KiB
Plaintext
Raw Normal View History

#!/usr/bin/perl
# removes the configuration of a node so that the next time you reboot
# a node it forces it to go through the discovery process.
# usage: rmnodecfg <noderange>
# this does not remove it completely from xCAT. You may want to do this
# command before running noderm to completely purge the system of the node
BEGIN
{
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}
use lib "$::XCATROOT/lib/perl";
use xCAT::Utils;
use strict;
use Socket;
my $blades = shift;
if(! $blades) {
print "Please specify a noderange of blades to remove\n";
exit;
}
my $tftpdir = xCAT::Utils->getTftpDir();
foreach my $blade (`/opt/xcat/bin/nodels $blades`){
chomp($blade);
my $hex = ip2hex($blade);
my $cmd = "nodech $blade chain.currstate= chain.currchain= chain.chain=";
$cmd = "chtab -d node=$blade chain";
print "$cmd\n";
`$cmd`;
$cmd = "chtab -d node=$blade mac";
print "$cmd\n";
`$cmd`;
$cmd = "makedhcp -d $blade";
print "$cmd\n";
`$cmd`;
$cmd = "rm $tftpdir/pxelinux.cfg/$blade";
print "$cmd\n";
`$cmd`;
if($hex){
$cmd = "rm $tftpdir/pxelinux.cfg/$hex";
print "$cmd\n";
`$cmd`;
}
}
sub ip2hex {
my $node = shift;
my $ip = '';
my @quad;
my $hex = '';
my $packed_ip = gethostbyname($node);
if(defined $packed_ip){
$ip = inet_ntoa($packed_ip);
@quad = split('\.', $ip);
$hex = sprintf("%02X%02X%02X%02X", @quad);
}
return $hex;
}