Skip to content
Extraits de code Groupes Projets
check_mountpoint.sh 2,18 ko
Newer Older
  • Learn to ignore specific revisions
  • root's avatar
    root a validé
    #!/bin/bash
    
    PROGNAME=$(basename $0)
    
    STATE_OK=0
    STATE_WARNING=1
    STATE_CRITICAL=2
    
    INVERSE=0
    
    FSTAB_STATUS=0
    MOUNTED_STATUS=0
    
    MOUNTS=/proc/mounts
    MTAB=/etc/mtab
    FSTAB=/etc/fstab
    
    function usage() {
            echo "Usage: $PROGNAME \$mountpoint [\$mountpoint2 ...]"
            echo "Usage: $PROGNAME -h,--help"
            echo "Options:"
            echo " -I          Inverse results (OK if not mounted, WARNING if mounted)"
            echo " MOUNTPOINT  list of mountpoint to check. MANDATORY"
    }
    
    function print_help() {
            echo ""
            echo "This module checks if a mountpoint is defined in ${FSTAB}, and whether it is mounted"
            echo "by checking ${MTAB}, ${MOUNTS} and mountpoint program"
            echo ""
            usage
            echo ""
    }
    
    # --------------------------------------------------------------------
    # startup checks
    # --------------------------------------------------------------------
    
    if [ $# -eq 0 ]; then
            usage
            exit $STATE_CRITICAL
    fi
    
    while [ "$1" != "" ]
    do
            case "$1" in
                    -I) INVERSE=1; shift;;
                    /*) MP="$1"; shift;;
                    *) usage; exit $STATE_UNKNOWN;;
            esac
    done
    
    if [ -z "${MP}" ]; then
            echo "ERROR: no mountpoint given!"
            usage
            exit $STATE_UNKNOWN
    fi
    
    ## check FSTAB mounts
    if [ ! -z "$( grep ${MP} ${FSTAB} )" ]
    then
        FSTAB_STATUS=1
    fi
    
    # check MOUNTS mounts
    if [ ! -z "$( grep ${MP} ${MOUNTS} )" ]
    then
        # check MTAB mounts
        if [ ! -z "$( grep ${MP} ${MTAB} )" ]
        then
            ## check mountpoint
            if [ $( mountpoint -q ${MP} ; echo $? ) -eq 0 ]
            then
                MOUNTED_STATUS=1
            fi
        fi
    fi
    
    if [ $MOUNTED_STATUS -eq 0 ]
    then
        if [ $INVERSE -eq 0 ]
        then
            echo "CRITICAL: ${MP} not mounted"
            exit $STATE_CRITICAL
        else
            echo "OK: ${MP} not mounted"
            exit $STATE_OK
        fi
    else
        if [ $FSTAB_STATUS -eq 0 ]
        then
            echo "WARNING: ${MP} mounted but not defined in fstab"
            exit $STATE_WARNING
        else
            if [ $INVERSE -eq 0 ]
            then
                echo "OK: ${MP} mounted"
                exit $STATE_OK
            else
                echo "WARNING: ${MP} mounted"
                exit $STATE_WARNING
            fi
        fi
    fi