#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin resultFile="/var/log/nc_audit/check_sec_updates" agetreshold=16 # 16 hours #input option PROGNAME=${0##*/} print_usage() { echo "" echo "Usage: $PROGNAME [-f Diff path] [-a file Age treshold, hours]" echo "Usage: $PROGNAME -h | --help" } print_help() { print_usage echo "" echo "This script check cPanel security updates (see TOP-347)" echo "" echo "-f Different path and file. Default - /var/log/nc_audit/check_sec_updates" echo "-a Age treshold for logfiles, hours. Default - 16" echo "-h help Print this help screen" echo "--help Print this help screen" echo "" exit 3 } while [ $# -gt 0 ]; do case "$1" in -f) resultFile=$2; shift ;; -a) agetreshold=$2; shift ;; --help) print_help exit 3 ;; -h) print_help exit 3 ;; *) echo >&2 "Unknown argument: $1" print_usage exit 3 ;; esac shift done #file existence if [ ! -f "$resultFile" ]; then echo "UNKNOWN. $resultFile no file" exit 3 fi #check age file resultFileAge=$((($(date +%s) - $(date +%s -r "${resultFile}")) / 3600)) # in hours if (( resultFileAge > agetreshold )) ; then echo "UNKNOWN. File ${resultFile} older than ${agetreshold} hours" exit 3 fi #checking file status read -r firstline<"$resultFile" firstline_code=$(echo "${firstline}" | awk '{print$1}' | sed 's/\[\|\]://g') case "${firstline_code}" in "OK" ) exitcode="0" ;; "FAILED" | "CRITICAL" ) exitcode="2" ;; * ) #Unknown state firstline="UNKNOWN. String from $resultFile does not match any pattern" exitcode="3" ;; esac echo "$firstline" exit "$exitcode"