mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 19:32:31 +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;
 |