#!/bin/bash
# Copyright (C) 2016 Mike Gabriel
#
# File:     check_fs_ro.sh
# Author:   Mike Gabriel
# Date:     06 Sep 2016
# Version:  0.11

# LICENSE: MIT/Expat

set -f
shopt -u extglob

# Program args
ME="$0"
CMDLINE="$@"

NAGOK=0
NAGWARN=1
NAGCRIT=2
NAGUNKN=3

usage()
{
    echo "Check that ext[2|3|4], btrfs or xfs filesystems are not read-only."
}

parse_options()
{
    local new

    set -- $CMDLINE
    while true
    do
        case $1 in
            #-v) shift ; gVersion=$1
            #;;
            -h) usage ; exit 0
            ;;
            ?*) echo "Syntax error." ; exit 1
            ;;
        esac
        shift 1 || break
    done
}

main()
{
    parse_options

    retval=$NAGOK

    grep -E '^.*\ .*\ (ext.*|btrfs|xfs)\ ro,.*$' /proc/mounts | while read fs; do
        rofs=`echo $fs | awk '{ print $2; }'`
        echo "CRITICAL: $rofs is a read-only filesystem."
    done

    if ! grep -E '^.*\ .*\ (ext.*|btrfs|xfs)\ ro,.*$' /proc/mounts 1>/dev/null; then
        echo "OK."
    else
        retval=$NAGCRIT
    fi

    exit $retval
}

main
