Skip to content
Snippets Groups Projects
Select Git revision
  • 115f66b4efd54a1b65ff6fac6cd6f2d0292f0a03
  • master default protected
2 results

30_Usage.md

Blame
  • check_fs_writable 2.12 KiB
    #!/usr/bin/env bash
    # ======================================================================
    #
    # Check filesystem ... is it readonly?
    #
    # requirements:
    # - none
    #
    # ----------------------------------------------------------------------
    # 2021-03-23  v0.0  <axel.hahn@iml.unibe.ch>
    # 2023-07-27  v1.1  <axel.hahn@unibe.ch>     shell fixes; update help page
    # ======================================================================
    
    
    . $( dirname $0 )/inc_pluginfunctions
    
    export self_APPVERSION=1.1
    
    dirs2test="/tmp /var/tmp"
    out=""
    
    # ----------------------------------------------------------------------
    # functions
    # ----------------------------------------------------------------------
    
    function showHelp(){
        local _self; _self=$(basename $0)
    cat <<EOF
    $( ph.showImlHelpHeader )
    
    Check if a filesystem is readonly in given directories.
    In each of the given directories a random file will be touched.
    
    The response is critical of one of the directory is not writable
    for the icinga client user.
    
    SYNTAX:
    $_self [directory [more directories]]
    
    OPTIONS:
    
        -h or --help   show this help.
    
    PARAMETERS:
    
        DIRECTORY where to touch a temporary file
                  default directories:
                  $dirs2test
    
    EXAMPLE:
    
        $_self /tmp /root /var/www
    
    EOF
    }
    # ----------------------------------------------------------------------
    # MAIN
    # ----------------------------------------------------------------------
    
    # --- check required tools
    # ph.require bc top
    
    
    # --- check param -h
    case "$1" in
        "--help"|"-h")
            showHelp
            exit 0
            ;;
        *)
    esac
    
    # params are directory names ... if a param was given it overrides the internal default
    test $# -gt 0 && dirs2test="$*"
    
    
    # ----- MAKE CHECK
    
    for mydir in $dirs2test
    do
      touchfile=$mydir/icinga_touch_testfile__${RANDOM}_${RANDOM}
      if ! out="$out
    
    --- touching something into $mydir
        $( touch $touchfile 2>&1 && ls -l $touchfile && rm -f $touchfile )"
      then
        ph.setStatus "critical"
      fi
    done
    
    
    # ----- OUTPUT
    
    ph.status "check if filesystem is writable in $dirs2test $out"
    
    
    # ----- CLEANUP AND BYE!
    
    ph.exit
    
    # ----------------------------------------------------------------------