[root@aix01]/root# cat /root/scripts/disable_unused_fcs.sh
#!/usr/bin/ksh #set -x ################################################## #@(#) disable all FC adapter not used for disks # FC adapter on FCoE adapters # FC ports with no light ################################################## # version: 1.1 14-03-2012 Manu ################################################## dir=`dirname $0` . $dir/.env excl_fcs=$(/usr/ios/cli/ioscli lsmap -all -npiv | grep '^FC' | cut -d':' -f2- | awk '{print $1}' | sort -u | paste -sd'|' -) if [ "${excl_fcs}" == "" ] then excl_fcs="None" fi #---------------------------- disable_fcoe () { lsdev -Cc adapter | grep fcs | grep 'FCoE' | awk '{print $1,$3}' | while read fcs address do fscsi=$(lsdev -C | grep '^f' | grep fscsi | grep "${address}-" | awk '{print $1}') autoconfig=$(lsattr -El $fscsi -a autoconfig | awk '{print $2}') if [ "$autoconfig" == "defined" ] then echo "adapter : $fcs state defined OK" else echo "adapter : $fcs type FCoE, disabling" ($execute) && rmdev -l $fscsi -R ($execute) && chdev -l $fscsi -a autoconfig=defined fi echo "$fcs $address $fscsi $(lsattr -El $fscsi -a autoconfig | awk '{print $2}')" done } #---------------------------- disable_fcs_power () { # if host is p9-server echo "########## active adapter are:" if [ "${excl_fcs}" != "None" ] then for fcs in $(echo $excl_fcs | sed 's/\|/\ /g') do lscfg -vpl $fcs | grep fcs done fi echo "##########" if [ $(lsattr -El sys0 -a modelname | grep -q '9080-M9S'; echo $?) -eq 0 ] then # Remove from check all fcs that are mapped lsdev -Cc adapter | grep fcs | grep -v 'FCoE' | awk '{print $1";"$3}' | egrep -v "$excl_fcs" | sed 's/;/\ /' | while read fcs address do fscsi=$(lsdev -C | grep '^f' | grep fscsi | grep "${address}-" | awk '{print $1}') autoconfig=$(lsattr -El $fscsi -a autoconfig | awk '{print $2}') if [ "$autoconfig" == "defined" ] then echo "adapter : $fcs state defined OK" else echo "Waiting" if [ $(fcstat $fcs > /dev/null 2>&1; echo $?) -eq 0 ] then lscfg -vpl $fcs | grep fcs echo "adapter : $fcs connected to SAN, no action OK" else echo "adapter : $fcs failed to connect to SAN, disabling" if [ "$execute" == "true" ] then ($execute) && rmdev -l $fscsi -R 2>/dev/null # if not working, try do disable device individualy if [ "$?" -ne 0 ] then echo "Replaying rmdev" for dev in $(lsdev -C | grep "${address}-" | awk '{print $3,$1}' | sort -r | awk '{print $2}' | egrep '^sf|^f') do ($execute) && rmdev -l $dev 2>/dev/null done ($execute) && rmdev -l $fscsi -R 2>/dev/null fi ($execute) && chdev -l $fscsi -a autoconfig=defined fi fi fi echo "$fcs $address $fscsi $(lsattr -El $fscsi -a autoconfig | awk '{print $2}')" done fi } ########################## # Main ########################## # Read and check scripts arguments execute=false #preview only while [ $# -gt 0 ] do case "$1" in -f) execute=true ;; -h|help) usage exit 1;; esac shift done disable_fcoe disable_fcs_power