From ec039ce26a9d8965b354797c149e04e336c6cca6 Mon Sep 17 00:00:00 2001 From: Guillaume Astier Date: Wed, 16 Mar 2022 10:02:26 +0100 Subject: [PATCH] [INIT] - add client & server --- README.md | 11 +++++++ client/Client.sh | 23 ++++++++++++++ client/conf-client/service.cfg | 4 +++ client/conf-client/sonde.cfg | 4 +++ server/Daemon.sh | 35 ++++++++++++++++++++++ server/conf-server/scripts/FunctionOutput | 9 ++++++ server/conf-server/scripts/file-present.sh | 12 ++++++++ server/conf-server/service.cfg | 3 ++ server/conf-server/sonde.cfg | 3 ++ 9 files changed, 104 insertions(+) create mode 100644 README.md create mode 100755 client/Client.sh create mode 100644 client/conf-client/service.cfg create mode 100644 client/conf-client/sonde.cfg create mode 100755 server/Daemon.sh create mode 100644 server/conf-server/scripts/FunctionOutput create mode 100644 server/conf-server/scripts/file-present.sh create mode 100644 server/conf-server/service.cfg create mode 100644 server/conf-server/sonde.cfg diff --git a/README.md b/README.md new file mode 100644 index 0000000..bb31528 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# MoniThor + +MoniThor is a simple monitoring tools in bash. + +It used netcat encrypted version : + +``` +cryptcat +``` + + diff --git a/client/Client.sh b/client/Client.sh new file mode 100755 index 0000000..347e053 --- /dev/null +++ b/client/Client.sh @@ -0,0 +1,23 @@ +#!/bin/bash + + +cd $(dirname $0)/conf-client/ + +SondeFile=$(pwd)/sonde.cfg +source service.cfg + + +while read DATA + do + Cmd=$(echo $DATA| cut -d"#" -f1) + Arg=$(echo $DATA| cut -d"#" -f2) + Res=$(echo -e "${Cmd}#${Arg}" | timeout 0.1 cryptcat -k ${LocalPassword} ${RemoteIp} ${RemotePort} 2> /dev/null) + if [[ -z $Res ]] + then + echo "5|No sonde $Cmd on serveur $RemoteIp" + else + echo "$Res" + fi + done < ${SondeFile} + + diff --git a/client/conf-client/service.cfg b/client/conf-client/service.cfg new file mode 100644 index 0000000..305fa77 --- /dev/null +++ b/client/conf-client/service.cfg @@ -0,0 +1,4 @@ +RemoteIp=127.0.0.1 +RemotePort=8080 +LocalPassword='Evil@MonitoR-666' + diff --git a/client/conf-client/sonde.cfg b/client/conf-client/sonde.cfg new file mode 100644 index 0000000..db28b66 --- /dev/null +++ b/client/conf-client/sonde.cfg @@ -0,0 +1,4 @@ +file#/tmp/coucou +file#/tmp/nop +file# +tamere#reboot diff --git a/server/Daemon.sh b/server/Daemon.sh new file mode 100755 index 0000000..9314bd1 --- /dev/null +++ b/server/Daemon.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +cd $(dirname $0)/conf-server/ + +ScriptDir=$(pwd)/scripts/ +SondeFile=$(pwd)/sonde.cfg +source service.cfg + + echo "coproc cryptcat -k "${LocalPassword}" -l ${LocalIp} ${LocalPort}" +while true + do + coproc cryptcat -k ${LocalPassword} -l ${LocalIp} -p ${LocalPort} + while read -r cmd; do + logger "Running $cmd" + cpt=0 + while read DATA + do + Sonde=$(echo ${DATA}| cut -d"#" -f1) + Exec=$(echo ${DATA}| cut -d"#" -f2) + RealCmd=$(echo ${cmd} | cut -d"#" -f1) + ArgCmd=$(echo ${cmd} | cut -d"#" -f2) + if [[ "${RealCmd}" == "$Sonde" ]] + then + logger "Exec $Exec $Arg $cpt" + bash ${ScriptDir}/${Exec} $ArgCmd + cpt=$((cpt+1)) + break + fi + done < ${SondeFile} + [[ "${cpt}" -eq 0 ]] && logger "You Failed $Sonde $Exec $Arg" + + done <&"${COPROC[0]}" >&"${COPROC[1]}" + +done + diff --git a/server/conf-server/scripts/FunctionOutput b/server/conf-server/scripts/FunctionOutput new file mode 100644 index 0000000..d642150 --- /dev/null +++ b/server/conf-server/scripts/FunctionOutput @@ -0,0 +1,9 @@ +Exit() { + + + Val=$(echo $1| cut -d"|" -f1) + Txt=$(echo $1| cut -d"|" -f2) + echo "$Val|$Txt" + exit $Val + +} diff --git a/server/conf-server/scripts/file-present.sh b/server/conf-server/scripts/file-present.sh new file mode 100644 index 0000000..1acbbea --- /dev/null +++ b/server/conf-server/scripts/file-present.sh @@ -0,0 +1,12 @@ +#!/bin/bash + + +source $(dirname $0)/FunctionOutput + +File="${1}" + +[[ -z ${File} ]] && Exit "5|no argument" + + +[[ -f ${File} ]] && Exit "0|File $File exist" || Exit "2|File $File is NOT present" + diff --git a/server/conf-server/service.cfg b/server/conf-server/service.cfg new file mode 100644 index 0000000..c27ccbf --- /dev/null +++ b/server/conf-server/service.cfg @@ -0,0 +1,3 @@ +LocalIp=127.0.0.1 +LocalPort=8080 +LocalPassword='Evil@MonitoR-666' diff --git a/server/conf-server/sonde.cfg b/server/conf-server/sonde.cfg new file mode 100644 index 0000000..187d780 --- /dev/null +++ b/server/conf-server/sonde.cfg @@ -0,0 +1,3 @@ +network#ip.sh +file#file-present.sh +