AIX disable unused fcs (FC ports)
[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