From 3841e8f585571a5ff58e9304cc3f2822cfeec9d2 Mon Sep 17 00:00:00 2001 From: Guillaume Astier Date: Wed, 16 Mar 2022 13:21:13 +0100 Subject: [PATCH] [UPDATE] README --- .gitignore | 1 + README.md | 110 ++++++++++++++++++++++++++++++++++- client/conf-client/sonde.cfg | 2 +- client/web/index.html | 49 ---------------- img/web.png | Bin 0 -> 32913 bytes 5 files changed, 110 insertions(+), 52 deletions(-) create mode 100644 .gitignore delete mode 100644 client/web/index.html create mode 100644 img/web.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..608ec1a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +client/web/index.html diff --git a/README.md b/README.md index bb31528..8f0fba4 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,117 @@ # MoniThor +## A propos + MoniThor is a simple monitoring tools in bash. -It used netcat encrypted version : +You can use it with netcat or cryptcat + +You can see result on the client from a web page (self hosted python web server) + + +## Server Configuration + +The configuration files for the server are : + + +### serivce.cfg + +- ./server/conf-server/service.cfg ``` -cryptcat +LocalIp is the IP adresse to used on the server (can used 127.0.0.1) +LocalPort is the local port to used on the server +######### +Crypted can used netcrypt (yes) or netcat (no) +LocalPassword is to set if you used Crypted + +``` + +### sonde.cfg + +- ./server/conf-server/sonde.cfg + +``` +SONDE#SCRIPT +``` + +SONDE is get by the server and it exec SCRIPT with ARG get from the client + +### tree + +- Tree for server + +``` + +└── server + ├── conf-server + │   ├── scripts + │   │   ├── file-present.sh + │   │   └── FunctionOutput + │   ├── service.cfg + │   └── sonde.cfg + └── Daemon.sh ``` +## Client Configuration + +The configuration files for the client are : + + +### serivce.cfg + +- ./client/conf-client/service.cfg + +``` +RemoteIp is the server IP address (can be used in localhost with 127.0.0.1) +RemotePort is the port to communicate with the server +LocalPassword can be used if you chose Crypted=yes (process is slow) +Crypted=no (use netcat or cryptcat) +Rotation is the time between the ratation of all sonde +WebPort is the port to see the result on the web interfaces : http://127.0.0.1:PORT + +``` + +### sonde.cfg + +- ./client/conf-client/sonde.cfg + +``` +SONDE#Arguemnent +``` + ++--------------+------------------+---------------------------------+----------------------+-----------------------------------+ +| Client | server | server | server | server | ++-------------==>----------------==>-------------------------------==>--------------------==>----------------------------------+ +| SONDE + ARG | Is SONDE exist ? | Get associated SCRIPT for SONDE | Exec SCRIPT With ARG | Push result with FORMAT [0-5]|TXT | ++--------------+------------------+---------------------------------+----------------------+-----------------------------------+ + +### tree + +- Tree for client + +``` +. +└── client +   ├── conf-client +   │   ├── exec.sh +   │   ├── functions +   │   ├── service.cfg +   │   ├── sonde.cfg +   │   ├── webmonithor.html +   │   └── webserver.sh +   ├── service.sh +   └── web +   ├── index.html +   └── webmonithor.html + +``` + +### WEB + +The client start a python sumple http server on localhost on `WebPort` + +![](./img/web.png) + + diff --git a/client/conf-client/sonde.cfg b/client/conf-client/sonde.cfg index db28b66..3fd4222 100644 --- a/client/conf-client/sonde.cfg +++ b/client/conf-client/sonde.cfg @@ -1,4 +1,4 @@ file#/tmp/coucou file#/tmp/nop file# -tamere#reboot +NotRealSondeName#reboot diff --git a/client/web/index.html b/client/web/index.html deleted file mode 100644 index 72138ec..0000000 --- a/client/web/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - MoniThor on 127.0.0.1 - - - - Date : 2022-03-16 12:55:53 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MoniThor Result
file/tmp/coucou 0 File /tmp/coucou exist
file/tmp/nop 2 File /tmp/nop is NOT present
file 5 no argument
tamerereboot 5 No sonde tamere on serveur 127.0.0.1
diff --git a/img/web.png b/img/web.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ef959fa1c62343697e222888928cf7b4bed22a GIT binary patch literal 32913 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 n2E8*FPR_*YBH28&c;!=J