mirror of
				https://git.lapiole.org/dani/ansible-roles.git
				synced 2025-10-27 08:51:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl -w
 | |
| 
 | |
| # This script will backup the config of MegaRAID based
 | |
| # RAID controllers. The saved config can be restored with
 | |
| # MegaCli -CfgRestore -f /home/lbkp/mega_0.bin for example
 | |
| # It also create a backup of the config as text, so you can
 | |
| # manually check how things were configured at a certain point in time
 | |
| 
 | |
| # If MegaCli is not installed, then the script does nothing
 | |
| 
 | |
| use strict;
 | |
| 
 | |
| my $megacli = undef;
 | |
| 
 | |
| if (-x '/opt/MegaRAID/MegaCli/MegaCli64'){
 | |
|   $megacli = '/opt/MegaRAID/MegaCli/MegaCli64';
 | |
| } elsif (-x '/opt/MegaRAID/MegaCli/MegaCli'){
 | |
|   $megacli = '/opt/MegaRAID/MegaCli/MegaCli';
 | |
| }
 | |
| 
 | |
| if (!$megacli){
 | |
|   print "MegaCli not installed, nothing to do\n";
 | |
|   exit 0;
 | |
| }
 | |
| 
 | |
| my $adapters = 0;
 | |
| foreach (qx($megacli -adpCount -NoLog)) {
 | |
|   if ( m/Controller Count:\s*(\d+)/ ) {
 | |
|     $adapters = $1;
 | |
|     last;
 | |
|   }
 | |
| }
 | |
| 
 | |
| foreach my $adp (0..$adapters-1){
 | |
|   my $hba = 0;
 | |
|   my $failgrouplist = 0;
 | |
|   foreach my $line (qx($megacli -CfgDsply -a$adp -NoLog)) {
 | |
|     if ( $line =~ m/Failed to get Disk Group list/ ) {
 | |
|       $failgrouplist = 1;
 | |
|     } elsif ( $line =~ m/Product Name:.*(JBOD|HBA)/ ) {
 | |
|       $hba = 1;
 | |
|     }
 | |
|   }
 | |
|   # Skip adapter if in HBA mode
 | |
|   next if ($hba && $failgrouplist);
 | |
| 
 | |
|   # Save the config in binary format
 | |
|   print "Saving config for adapter $adp\n";
 | |
|   qx($megacli -CfgSave -f /home/lbkp/megaraid/cfg_$adp.bin -a$adp -NoLog);
 | |
|   die "Failed to backup conf for adapter $adp\n" unless ($? == 0);
 | |
| 
 | |
|   # Now also save in text representation
 | |
|   open TXT, ">/home/lbkp/megaraid/cfg_$adp.txt";
 | |
|   print TXT foreach qx($megacli -CfgDsply -a$adp -NoLog);
 | |
|   die "Failed to backup Cfg text description for adapter $adp\n" unless ($? == 0);
 | |
|   close TXT;
 | |
| }
 | 
