#!/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 # 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 strict; use Socket; use Getopt::Long; my $help; GetOptions('h|help' => \$help); if ($help) { print <<'EOS'; Usage: rmnodecfg [-h|--help] Removes the configuration of a node so that the next time you reboot it, it forces it to go through the discovery process. 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 Author: Vallard Benincosa EOS exit 0; } require xCAT::Utils; require xCAT::TableUtils; my $blades = shift; if(! $blades) { print "Please specify a noderange of blades to remove\n"; exit; } my $tftpdir = xCAT::TableUtils->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; }