User Tools

Site Tools


storage:brocade_scripts

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
storage:brocade_scripts [2023/10/04 12:09]
manu [dev]
storage:brocade_scripts [2024/02/16 18:24] (current)
manu
Line 23: Line 23:
 #          html_tag;​nagios_tag;​reserved;​output #          html_tag;​nagios_tag;​reserved;​output
 #​==================================================================== #​====================================================================
-# version 1.0+# version 1.0 02-2018 eif 
 +# version 1.1 02-2024 eif add port signal strength ​
  
 dir=`dirname $0` dir=`dirname $0`
Line 35: Line 36:
 export logname=$logpath/​$sn.log export logname=$logpath/​$sn.log
 TMPFILE=$logpath/​tempo_file TMPFILE=$logpath/​tempo_file
 +
 +month=$(date "​+%Y-%m"​)
 +archpath=/​storage/​san/​backup/​$month
  
 os=$(uname -s | tr '​A-Z'​ '​a-z'​) os=$(uname -s | tr '​A-Z'​ '​a-z'​)
  
-USER=admin +USER=report 
-listswitch="​sansw1 sansw2" ​       # All SAN switches from all fabric separated by space+listswitch="​swsan01 swsan02" ​       # All SAN switches from all fabric separated by space
  
 #​NAGIOSTAG="​0=OK,​ 1=WARNING, 2=CRITICAL, 3=UNKNOWN"​ #​NAGIOSTAG="​0=OK,​ 1=WARNING, 2=CRITICAL, 3=UNKNOWN"​
Line 46: Line 50:
 COLOR[2]="#​FF2400" ​     # red    #DF013A COLOR[2]="#​FF2400" ​     # red    #DF013A
 COLOR[3]="​yellow" ​      # yellow #F3F781 COLOR[3]="​yellow" ​      # yellow #F3F781
-COLOR[4]="#​56A5EC" ​     # blue+COLOR[4]="#​86EFF6" ​     # blue
 COLOR[5]="#​FFFFFF" ​     # white COLOR[5]="#​FFFFFF" ​     # white
 #FFA500 : orange #FFA500 : orange
-COLOR[6]="#​3090C7" ​     # Blue Ivry for SAN blue+#​COLOR[6]="#​33CAFF" ​     # Blue SAN blue 
 +COLOR[6]="​ #85C1E9" ​     # Blue SAN blue
 COLOR[7]="#​E77471" ​     # Light Coral for SAN red COLOR[7]="#​E77471" ​     # Light Coral for SAN red
  
Line 87: Line 92:
   fi   fi
 fi fi
 +}
 +
 +#​----------------------
 +get_fids ()
 +{
 +for sw in  $(cat $list)
 +do
 +  echo "########​ $sw ########"​
 +  ${SSH}$sw 'lscfg --show'​ > $logfile
 +  fids=$(cat $logfile | grep '​|'​ | sed 's/^\ //' | cut -d' ' -f2-  | sed 's/|/\ /g' | tr -s ' ' | tr ' ' '​\n'​ | sort -u | sed '/​^$/​d'​ | tr '​\n'​ ' ')
 +  echo "FID : $fids"
 +done
 +
 +### fosexec --fid 2 -cmd "​switchshow"​
 +}
 +
 +#​----------------------------
 +list_switch_ports_signal ()
 +{
 +fabric=fabric
 +for sw in $(echo $listswitch)
 +do
 +  echo "########​ $sw"
 +  ssh $USER@$sw "​sfpshow -all" ​ > $logpath/​sfpshow_${fabric}.csv
 +done
 } }
  
Line 96: Line 126:
 for sw in $(echo $listswitch) for sw in $(echo $listswitch)
 do do
 +  echo "########​ $sw"
   ssh $USER@$sw "​configshow"​ | egrep "​^alias|^zone|^cfg|^enable"​ > $logpath/​configshow_${fabric}.csv   ssh $USER@$sw "​configshow"​ | egrep "​^alias|^zone|^cfg|^enable"​ > $logpath/​configshow_${fabric}.csv
   fabricname=$(grep -i '​^enable:'​ $logpath/​configshow_${fabric}.csv | awk -F':'​ '​{print $2}')   fabricname=$(grep -i '​^enable:'​ $logpath/​configshow_${fabric}.csv | awk -F':'​ '​{print $2}')
Line 101: Line 132:
   switchname=$(grep -i '​^switchName:'​ $TMPFILE.tempo | awk -F':'​ '​{print $2}' | tr '​A-Z'​ '​a-z'​)   switchname=$(grep -i '​^switchName:'​ $TMPFILE.tempo | awk -F':'​ '​{print $2}' | tr '​A-Z'​ '​a-z'​)
   swdomain=$(grep -i '​^switchDomain:'​ $TMPFILE.tempo | awk -F':'​ '​{print $2}')   swdomain=$(grep -i '​^switchDomain:'​ $TMPFILE.tempo | awk -F':'​ '​{print $2}')
 +  ssh $USER@$sw "​sfpshow -all" > $logpath/​sfpshow-all_${fabricname}_${switchname}_full
 +  cat $logpath/​sfpshow-all_${fabricname}_${switchname}_full | egrep '​Slot|Power'​ |  sed '​s/​^Slot/​\n/​g'​ | tr -s ' ' | sed 's/^\ //g' | sed '​s/​Port\ //' | sed '​s/​\//;/'​ | sed '​s/:/;/'​ > $logpath/​sfpshow-all_${fabname}_${switchname}
 +  ssh $USER@$sw "​sfpshow"​ | tr -s ' ' | sed 's/\ //g' | sed '​s/​Slot//'​ | sed '​s/​Port//'​ | cut -d':'​ -f1,5 | sed '​s/​\//;/'​ > $logpath/​sfpshow_${fabricname}_${switchname}
   echo "​H3;​0;​TAG;​FABRIC:​ $fabricname ​ SWITCHNAME: $switchname"​ > $logpath/​switchshow_${fabricname}_${switchname}.csv   echo "​H3;​0;​TAG;​FABRIC:​ $fabricname ​ SWITCHNAME: $switchname"​ > $logpath/​switchshow_${fabricname}_${switchname}.csv
-  echo "​TH;​4;​TAG;​Index;​Slot;​Port;​Speed;​State;​Protocol;​Type;​WWN;​Alias;​Zoned"​ >> $logpath/​switchshow_${fabricname}_${switchname}.csv+  echo "​TH;​4;​TAG;​Index;​Slot;​Port;​Speed;​State;​Protocol;​Type;​WWN;​Alias;​Zoned;​SFP_speed;​RXpower;​TXpower" >> $logpath/​switchshow_${fabricname}_${switchname}.csv
   if [ $(grep -qi '​^Index;​Port;'​ $TMPFILE.tempo;​ echo $?) -eq 0 ]   if [ $(grep -qi '​^Index;​Port;'​ $TMPFILE.tempo;​ echo $?) -eq 0 ]
   then   then
     slot=";​NA"​     slot=";​NA"​
-    cat $TMPFILE.tempo | sed -e "/;/ s/;/​${slot};/​2"​ > $logpath/​switchshow_${fabricname}_${switchname}+    cat $TMPFILE.tempo | sed -e "/;/ s/;/​${slot};/​2" | sed '​s/​^;//'​ | sed '​s/​^/;/'​ | grep -v ";​FC;​Router" > $logpath/​switchshow_${fabricname}_${switchname}
     rm $TMPFILE.tempo     rm $TMPFILE.tempo
   else   else
-    ​mv $TMPFILE.tempo $logpath/​switchshow_${fabricname}_${switchname}+    ​cat $TMPFILE.tempo ​| sed '​s/​^;//'​ | sed '​s/​^/;/'​ | grep -v ";​FC;​Router"​ > $logpath/​switchshow_${fabricname}_${switchname} 
 +    rm $TMPFILE.tempo
   fi   fi
 +
 +
   for line in $(cat $logpath/​switchshow_${fabricname}_${switchname} | grep "​FC"​ | grep -v '​^FC'​ | cut -d';'​ -f1-4,7-)   for line in $(cat $logpath/​switchshow_${fabricname}_${switchname} | grep "​FC"​ | grep -v '​^FC'​ | cut -d';'​ -f1-4,7-)
   do   do
 +    port=$(echo $line | cut -d';'​ -f3,4)
 +    sfpspeed=$(grep "​^${port}:"​ $logpath/​sfpshow_${fabricname}_${switchname} | cut -d':'​ -f2 | tr ' ' '​\n'​ | grep _Gbps | sed '​s/​_Gbps//'​ | rev | cut -d','​ -f1 | rev)
 +    if [ "​$sfpspeed"​ == ""​ ]
 +    then
 +      sfpspeed="​NA"​
 +    fi
 +############################​
 +    rxpower=$(grepp "​^${port};"​ $logpath/​sfpshow-all_${fabricname}_${switchname} | grep "RX Power" | cut -d';'​ -f2- | sed 's/\ dBm\ /​|dBm|/​g'​)
 +    txpower=$(grepp "​^${port};"​ $logpath/​sfpshow-all_${fabricname}_${switchname} | grep "TX Power" | cut -d';'​ -f2- | sed 's/\ dBm\ /​|dBm|/​g'​)
 +
 +    # get color for fabric
     NAGIOSTAG=0     NAGIOSTAG=0
-    if [ $(echo $fabricname | grep -qi blue;echo $?) -eq 0 ]+# for linux    suff=$(echo $fabricname | tr [:alpha:] ' ' | awk '​{print $1}'​) 
 +    suff=$(echo $fabricname | rev | cut -c1) 
 +    modulo=$(echo $(($suff % 2)) ) 
 +    if [ "​$modulo" ​-eq 0 ]
     then     then
       NAGIOSTAG=6       NAGIOSTAG=6
Line 132: Line 183:
       wwn=""​       wwn=""​
       alias=""​       alias=""​
-      echo "​${prefix}${begin};;​${wwn};​${alias};​${zone}"​ >> $logpath/​switchshow_${fabricname}_${switchname}.csv+      ​rxpower=""​ 
 +      txpower=""​ 
 +      ​echo "​${prefix}${begin};;​${wwn};​${alias};​${zone};​${sfpspeed};​${rxpower};​${txpower}" >> $logpath/​switchshow_${fabricname}_${switchname}.csv
     else     else
       if [ $(echo $line | egrep "​E-Port"​ > /dev/null; echo $?) -eq 0 ]       if [ $(echo $line | egrep "​E-Port"​ > /dev/null; echo $?) -eq 0 ]
Line 147: Line 200:
           alias=$(echo $line1 | cut -d';'​ -f9- | sed '​s/;/​|/​g'​)           alias=$(echo $line1 | cut -d';'​ -f9- | sed '​s/;/​|/​g'​)
         fi         fi
-        echo "​${prefix}${begin};​${wwn};​${alias}(ISL);​${zone}"​ >> $logpath/​switchshow_${fabricname}_${switchname}.csv+        echo "​${prefix}${begin};​${wwn};​${alias}(ISL);​${zone};​${sfpspeed};​${rxpower};​${txpower}" >> $logpath/​switchshow_${fabricname}_${switchname}.csv
       else       else
         if [ $(echo $line | egrep "​L-Port|NPIV"​ > /dev/null; echo $?) -eq 0 ]         if [ $(echo $line | egrep "​L-Port|NPIV"​ > /dev/null; echo $?) -eq 0 ]
Line 174: Line 227:
                 fi                 fi
               fi               fi
-              echo "​${prefix}${begin};​${wwn};​${alias};​${zone}"​ >> $logpath/​switchshow_${fabricname}_${switchname}.csv+              echo "​${prefix}${begin};​${wwn};​${alias};​${zone};​${sfpspeed};​${rxpower};​${txpower}" >> $logpath/​switchshow_${fabricname}_${switchname}.csv
             fi             fi
           done           done
Line 208: Line 261:
               fi               fi
             fi             fi
-            echo "​${prefix}${begin};​${wwn};​${alias};​${zone}"​ >> $logpath/​switchshow_${fabricname}_${switchname}.csv+            echo "​${prefix}${begin};​${wwn};​${alias};​${zone};​${sfpspeed};​${rxpower};​${txpower}" >> $logpath/​switchshow_${fabricname}_${switchname}.csv
           else           else
             begin=$(echo $line | cut -d';'​ -f1-8)             begin=$(echo $line | cut -d';'​ -f1-8)
             wwn=$(echo $line | cut -d';'​ -f9)             wwn=$(echo $line | cut -d';'​ -f9)
             alias="​(unknown_type)"​             alias="​(unknown_type)"​
-            echo "​${prefix}${begin};​${wwn};​${alias};​${zone}"​ >> $logpath/​switchshow_${fabricname}_${switchname}.csv+            echo "​${prefix}${begin};​${wwn};​${alias};​${zone};​${sfpspeed};​${rxpower};​${txpower}" >> $logpath/​switchshow_${fabricname}_${switchname}.csv
           fi           fi
         fi         fi
Line 219: Line 272:
     fi     fi
   done   done
-  ​rm $logpath/​switchshow_${fabricname}_${switchname}+#  ​rm $logpath/​switchshow_${fabricname}_${switchname}
   mv $logpath/​switchshow_${fabricname}_${switchname}.csv $logpath/​swsan_${fabricname}_switchshow_${switchname}.csv   mv $logpath/​switchshow_${fabricname}_${switchname}.csv $logpath/​swsan_${fabricname}_switchshow_${switchname}.csv
   mv $logpath/​configshow_${fabric}.csv $logpath/​swsan_${fabricname}_configshow_${switchname}.csv   mv $logpath/​configshow_${fabric}.csv $logpath/​swsan_${fabricname}_configshow_${switchname}.csv
 done done
 } }
 +
  
 #​---------------------------- #​----------------------------
Line 240: Line 294:
   for i in $(ls $logpath/​swsan_${fabricname}_switchshow_*.csv)   for i in $(ls $logpath/​swsan_${fabricname}_switchshow_*.csv)
   do   do
-    cat $i | grep '​^TD;'​ >> $logpath/​san_result.csv+    cat $i | grep '​^TD;' ​| rev | cut -d';'​ -f2- | rev >> $logpath/​san_result.csv
   done   done
     echo "​H3;​0;​TAG;​Alias defined in Fabric ${fabricname} but not connected"​ | tee $logpath/​swsan_${fabricname}_unused.csv     echo "​H3;​0;​TAG;​Alias defined in Fabric ${fabricname} but not connected"​ | tee $logpath/​swsan_${fabricname}_unused.csv
     echo "​TH;​4;​TAG;​alias;​number of defined zones;zone name" | tee -a $logpath/​swsan_${fabricname}_unused.csv     echo "​TH;​4;​TAG;​alias;​number of defined zones;zone name" | tee -a $logpath/​swsan_${fabricname}_unused.csv
  
-    sed '​1d'​ $logpath/​san_result.csv | grep ";​Online;"​ | rev | cut -d';'​ -f2 | rev | sed '​s/​(no_alias)//'​ | sed '​s/​(multiples_alias)//'​ | sed '/​^$/​d'​ | grep -v "​(ISL)"​ | tr ' ' '​\n'​ | sed '​s/​$/;/'​ > $logpath/san_result1.csv+    sed '​1d'​ $logpath/​san_result.csv | grep ";​Online;"​ | rev | cut -d';'​ -f2 | rev | sed '​s/​(no_alias)//'​ | sed '​s/​(multiples_alias)//'​ | sed '/​^$/​d'​ | grep -v "​(ISL)"​ | tr ' ' '​\n'​ | sed '​s/​$/;/'​ > $logpath/saesult1.csv
  
     for alias in $(cat $filename | grep '​^alias'​ | cut -d'​.'​ -f2- | cut -d':'​ -f1 | sort | uniq)     for alias in $(cat $filename | grep '​^alias'​ | cut -d'​.'​ -f2- | cut -d':'​ -f1 | sort | uniq)
Line 433: Line 487:
 send_wiki() send_wiki()
 { {
-htmlinventory=$logpath/​san_switchshow.html +dokupath=/​var/​www/​html/​archives/​inventory/​san
-dokupath=/​var/​www/​html/​data/pages/​inventory/​san +
-dokuhost=dokuwiki01+
 dokuuser=apache dokuuser=apache
 dokugrp=apache dokugrp=apache
  
-#​file_exist=$(ssh $dokuhost "ls $dokupath/​$xlsmonthly > /dev/null 2>&​1"​ ;echo $?) +for file1 in san_switchshow.html san_unused_alias.html san_full_config.txt 
-#echo ${file_exist} +do 
-#if [ ${file_exist} != 0 ] +  ​sudo su root -"/bin/cp $logpath/$file1 $dokupath"​ 
-#then +done 
- echo "​Creating monthly file hmcscan_ALL-server_${cur_month}.xls"​ + 
-#  scp -p $xlsinventory $dokuhost:​$dokupath/​$xlsmonthly +sudo su root -c "/​bin/​chown -R $dokuuser.$dokugrp ​$dokupath" 
-#  scp $dokuhost:​$dokupath/​$dokufilename $logpath + 
-#  echo "\n\nhttp://dokuwiki01/​data/​pages/​inventory/​hmcscan/​$xlsmonthly"​ >> ​$logpath/$dokufilename +# Archive 
-#  scp -p $logpath/​$dokufilename $dokuhost:$dokupath +if [ ! -$archpath/san_switchshow.html ] 
-#else +then 
-#  echo "​Monthly file available, not creating+  for file1 in san_switchshow.html ​san_unused_alias.html san_full_config.txt 
-#fi +  do 
-# +    cp $logpath/$file1 $archpath 
-scp --$htmlinventory ​$dokuhost:$dokupath +  done 
-scp -p -r $logpath/​san_unused_alias.html ​$dokuhost:​$dokupath +fi 
-scp -p -r $logpath/san_full_config.txt ​$dokuhost:​$dokupath +
-#scp -p $xlsinventory ​$dokuhost:$dokupath +
-ssh $dokuhost "chown -R $dokuuser.$dokugrp $dokupath"​+
 } }
  
Line 469: Line 519:
 echo "***** Switchshow"​ echo "***** Switchshow"​
 list_switch_ports list_switch_ports
 +echo "***** Sfpshow"​
 +#​list_switch_ports_signal
 echo "***** convert HTML" echo "***** convert HTML"
 convert_html > $logpath/​san_switchshow.html convert_html > $logpath/​san_switchshow.html
Line 484: Line 536:
  
 main > $logname 2>&1 main > $logname 2>&1
 +
 </​code>​ </​code>​
  
 ===== Backup Brocade SAN switch ===== ===== Backup Brocade SAN switch =====
  
 +==== With standard user ====
 +
 +<cli prompt='#'>​
 +[root@mgmt01 san]# cat backup_brocade_config.sh
 +</​cli>​
 +<​code>​
 +#!/bin/bash
 +#set -x
 +#​====================================================================
 +#@(#) Script to backup SAN switches
 +#​====================================================================
 +# version 1.0 eif
 +
 +dir=`dirname $0`
 +
 +. $dir/.env
 +
 +os=$(uname -s | tr '​A-Z'​ '​a-z'​)
 +
 +USER=report
 +listswitch="​san01 san02" ​       # All SAN switches from all fabric separated by space
 +
 +month=$(date "​+%Y-%m"​)
 +archpath=/​workdir/​san/​backup/​$month
 +
 +
 +#​----------------------------
 +initialize ()
 +{
 +echo "# Initialize"​
 +mkdir -p $archpath > /dev/null 2>&1
 +}
 +
 +#​----------------------------
 +backup_san_switches ()
 +{
 +
 +fabric=fabric
 +for sw in $listswitch
 +do
 +  echo "########​ $sw"
 +  ssh $USER@$sw "​configshow -all" > $archpath/​${sw}.txt
 +done
 +}
 +
 +
 +#############################​
 +# Main
 +#############################​
 +main ()
 +{
 +date
 +echo "***** initialize"​
 +initialize
 +echo "***** Backup SAN switches"​
 +backup_san_switches
 +
 +date
 +}
 +
 +main > $logname 2>&1
 +</​code>​
 +
 +==== With privileged user ====
  
 <cli prompt='#'>​ <cli prompt='#'>​
storage/brocade_scripts.1696414191.txt.gz · Last modified: 2023/10/04 12:09 by manu