Added port as performance output

This commit is contained in:
Jonny007-MKD 2020-02-28 20:56:10 +01:00 committed by root
parent d3d14a431e
commit f35340ff25
1 changed files with 36 additions and 16 deletions

View File

@ -29,12 +29,17 @@ while [[ $# -gt 0 ]]; do
echo "--input FILE: Read from this file. Default: /proc/mdstat"
exit 0
;;
*)
echoerr "Unknown argument: $1"
exit 3
;;
esac
shift
done
if [ -z "$HOST" -a -z "$INPUT" ]; then
echoerr "Missing host argument (-h)"
exit 3
fi
function log {
@ -83,7 +88,8 @@ function runNmap {
}
NOW_PORTS=false
OPEN_PORTS=()
PORT_STATES=()
PORT_NAMES=()
function parseLine {
local line="$1"
if ! $NOW_PORTS; then
@ -94,53 +100,67 @@ function parseLine {
if [ -z "$line" ]; then
NOW_PORTS=false
else
local x=${line/\/*}
OPEN_PORTS+=($x)
local split
read -ra split <<< "$line"
local number=${split[0]/\/*}
local state=${split[1]}
local name=${split[2]}
PORT_STATES[$number]=$state
PORT_NAMES[$number]=$name
fi
fi
}
ERROR=false
NEW_PORTS=()
UNEXP_OPEN_PORTS=()
function comparePorts {
log ${KNOWN_PORTS[@]}
KNOWN_PORTS=($(for each in ${KNOWN_PORTS[@]}; do echo $each; done | sort))
log ${KNOWN_PORTS[@]}
for i in "${OPEN_PORTS[@]}"; do
for port in "${!PORT_STATES[@]}"; do
if [[ "${PORT_STATES[$port]}" != open* ]]; then
continue;
fi
skip=false
for j in "${KNOWN_PORTS[@]}"; do
if [ $j -eq $i ]; then
if [ $j -eq $port ]; then
skip=true
break
fi
done
if ! $skip; then
log Unexpected open port: $i
NEW_PORTS+=($i)
log Unexpected open port: $port
UNEXP_OPEN_PORTS+=($port)
fi
done
if [ ${#NEW_PORTS[@]} -gt 0 ]; then
if [ ${#UNEXP_OPEN_PORTS[@]} -gt 0 ]; then
ERROR=true
fi
}
function print {
if $ERROR; then
echo "CRITICAL - These ports should not be open: ${NEW_PORTS[@]}"
echo -n "CRITICAL - These ports should not be open: ${UNEXP_OPEN_PORTS[@]}"
else
echo "OK"
echo -n "OK"
fi
echo -n " | "
if $ERROR; then
exit 2
else
exit 0
fi
for port in "${!PORT_STATES[@]}"; do
echo -n "'${PORT_NAMES[$port]} ($port): ${PORT_STATES[$port]}'=0 "
done
}
runNmap
comparePorts
print
if $ERROR; then
exit 2
else
exit 0
fi