mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/perl -w
 | 
						|
#use Data::Dumper;
 | 
						|
use Getopt::Long;
 | 
						|
 | 
						|
sub usage{
 | 
						|
    print "Usage: dhcphelper -h \n";
 | 
						|
    print "\n";
 | 
						|
    print "       dhcphelper -r|--rm -m|--mac <mac address> [ -a|--ip <ip address>] [ -n|--name <node name>]\n";
 | 
						|
    print "       delete the dhcp lease of specified <mac>,<ip address> and <node name>\n";
 | 
						|
    print "\n";
 | 
						|
}
 | 
						|
 | 
						|
my $help;
 | 
						|
my $rmop;
 | 
						|
my $mac;
 | 
						|
my $ip;
 | 
						|
my $hostname;
 | 
						|
GetOptions ("m|mac=s" => \$mac,    # numeric
 | 
						|
            "a|ip=s"   => \$ip,      # string
 | 
						|
            "n|name=s"   => \$hostname,      # string
 | 
						|
            "r|rm"   => \$rmop,      # flag
 | 
						|
            "h|help"  => \$help)   # flag
 | 
						|
or &usage;
 | 
						|
 | 
						|
if($help){
 | 
						|
    &usage;
 | 
						|
    exit 0;
 | 
						|
}elsif($rmop){
 | 
						|
    my $out=qx(tabdump -w key==omapi -w username==xcat_key  passwd |tail -n1|awk -F, '{print \$2","\$3}');
 | 
						|
    $out =~ s/("|\n)//g;
 | 
						|
    my ($id,$passwd)=split(',',$out);
 | 
						|
    if(-z "$id" || -z "$passwd" ){
 | 
						|
        print "Error: no 'omapi' entry defined in passwd table!";
 | 
						|
        exit 1;
 | 
						|
    }
 | 
						|
 | 
						|
    my $omshell;
 | 
						|
    open($omshell, "|/usr/bin/omshell >/dev/null");
 | 
						|
    print $omshell "key "
 | 
						|
      . $id . " \""
 | 
						|
      . $passwd . "\"\n";
 | 
						|
    print $omshell "connect\n";
 | 
						|
 | 
						|
    if($hostname){
 | 
						|
        print $omshell "new host\n";
 | 
						|
        print $omshell
 | 
						|
          "set name = \"$hostname\"\n";    #Find and destroy conflict name
 | 
						|
        print $omshell "open\n";
 | 
						|
        print $omshell "remove\n";
 | 
						|
        print $omshell "close\n";
 | 
						|
    }
 | 
						|
 | 
						|
    if ($mac)
 | 
						|
    {
 | 
						|
        print $omshell "new host\n";
 | 
						|
        print $omshell "set hardware-address = " . $mac
 | 
						|
          . "\n";                      #find and destroy mac conflict
 | 
						|
        print $omshell "open\n";
 | 
						|
        print $omshell "remove\n";
 | 
						|
        print $omshell "close\n";
 | 
						|
    }
 | 
						|
 | 
						|
    if($ip){
 | 
						|
       print $omshell "new host\n";
 | 
						|
       print $omshell
 | 
						|
        "set ip-address = $ip\n";    #find and destroy ip conflict
 | 
						|
       print $omshell "open\n";
 | 
						|
       print $omshell "remove\n";
 | 
						|
       print $omshell "close\n";
 | 
						|
    }
 | 
						|
    close($omshell);
 | 
						|
}else{
 | 
						|
    &usage;
 | 
						|
    exit 1;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#print "$mac-$ip-$hostname\n"
 | 
						|
exit 0;
 |