This is an old revision of the document!
[root@aixa001]/root/scripts> cat count_path.sh
#!/bin/bash #set -x ############################################# #@(#) Count the number of path on disks (multipathing) ############################################# # version 1.0 10-2019 Manu ############################################# VERBOSE=0 STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3 STATE_DEPENDENT=4 EXITSTATUS=$STATE_UNKNOWN # Default Exit Code as UNKNOWN. EXITSTATUS=0 EXITOUTPUT="" logpath=/root/scripts/logs output=$logpath/path_count.out cat /dev/null > $output numberpath=8 # ($execute) && execute=true os=$(uname -a | awk '{print $1}') grepp() { [ $# -eq 1 ] && perl -00ne "print if /$1/i" || perl -00ne "print if /$1/i" < "$2";} count_linux_path() { #for disk in $(/usr/sbin/multipath -ll | awk '{print $1}' | grep '^mpath') #do # echo $disk $(/usr/sbin/multipath -ll | grep -v "policy=" | grep -v "size=" | sed '/^mpath/i \\n' | grepp $disk | #grep -v '^mpath' | grep active | wc -l) | sed 's/\ /;/g' | sed 's/$/;/' | sed "s/$/$numberpath;/" >> $output #done for disk in $(/usr/sbin/multipath -ll | awk '{print $1}' | egrep '^[a-z]|^[A-Z]' | grep -v 'size=') do echo $disk $(/usr/sbin/multipath -ll | grep -v "policy=" | grep -v "size=" | sed '/^[a-z]/i \\n' | sed '/^[A-Z]/i \\n' | grepp $disk | grep -v "^$disk" | grep active | wc -l) | sed 's/\ /;/g' | sed 's/$/;/' | sed "s/$/$numberpath;/" >> $output done ($verbose) && cat $output } count_aix_path() { for i in $(lspv | awk '{print $1}') do echo $i $(lspath -l $i | grep Enabled | wc -l) | sed 's/\ /;/g' | sed 's/$/;/' | sed "s/$/$numberpath;/" >> $output done ($verbose) && cat $output } verbose=false #preview only while [ $# -gt 0 ] do case "$1" in -v) verbose=true ;; esac shift done if [ "$os" = "Linux" ] then count_linux_path else if [ "$os" = "AIX" ] then count_aix_path else EXITSTATUS=$STATE_UNKNOWN EXITOUTPUT="Unknown OS" fi fi if [ "$EXITOUTPUT" = "" ] then for line in $(cat $output) do curpath=$(echo $line | awk -F ';' '{print $2}') maxpath=$numberpath halfpath=$(echo "scale=0;$maxpath/2" | bc) if [ "$curpath" -lt "$halfpath" ] then EXITSTATUS=$STATE_CRITICAL EXITOUTPUT=$(echo "$EXITOUTPUT $line") else if [ "$curpath" -lt "$maxpath" ] then if [ "$EXITSTATUS" -lt "$STATE_WARNING" ] then EXITSTATUS=$STATE_WARNING fi EXITOUTPUT=$(echo "$EXITOUTPUT $line") fi fi done fi case "$EXITSTATUS" in "$STATE_OK" ) EXITOUTPUT="Paths Status OK" ;; "$STATE_WARNING" ) EXITOUTPUT=$(echo "WARNING: Missing disk paths: $EXITOUTPUT") ;; "$STATE_CRITICAL" ) EXITOUTPUT=$(echo "CRITICAL: Error disk paths: $EXITOUTPUT") ;; esac ### EOF SECTION rm -f $output 2>/dev/null echo $EXITOUTPUT exit $EXITSTATUS