From 7cbfef40b7ea87ae3055a57fe44b2949b4ee05c4 Mon Sep 17 00:00:00 2001 From: punix Date: Sun, 23 Mar 2025 21:47:58 +0100 Subject: [PATCH] first commit --- Changelog | 47 ++++++++++ clidmanager | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++ docker_work | 9 ++ install | 88 +++++++++++++++++++ 4 files changed, 386 insertions(+) create mode 100644 Changelog create mode 100755 clidmanager create mode 100755 docker_work create mode 100755 install diff --git a/Changelog b/Changelog new file mode 100644 index 0000000..9582208 --- /dev/null +++ b/Changelog @@ -0,0 +1,47 @@ +Changelog for clidmanager +My standard System: Debian 12 (Server) +create on 20-3-2025 by Désiré Werner Menrath + +## [Unreleased] + + - Add comments + + - write in English and add translation in German + + + ### Added +20-03-2025 + + - first 70 lines written for tests + + + ### Added +21-03-2025 + + - functions declared: Create new folder, edit yml files, + start/restart container with up -d, view log file, + Docker Special "Crownsec-Treafik-Stack" updaten + + - Installer added + + - File no_pwd_clidmanager added in /etc/sudoers.d + + + ### Added +22-03-2025 + + - functions declared: Start/stop all containers, + View current container, Added version number, + Colors added for better readability and more beautiful look + + - sepparate Bash file for directory change + + - Info and info 2 Variable for Note on directory changer with dw + + - Numbering from now on in yellow for better readability + + ### Added +23-03-2025 + + - Docker directory for logs, edit yml files and start container + is now displayed numbered, for easy handling. diff --git a/clidmanager b/clidmanager new file mode 100755 index 0000000..2596d50 --- /dev/null +++ b/clidmanager @@ -0,0 +1,242 @@ +#!/bin/bash + +# clidmanager simple management a docker container +# Author: Désiré Werner Menrath +# Email: polunga40@unity-mail.de +# Translate German to English with LibreTranslate +# Translatefiles edit with Poedit +# Use without warranty! + +NORMAL='\033[0m' +GREEN='\033[1;32m' +RED='\033[31;1;42m' +BLUE='\033[30;1;34m' +ZYAN='\033[30;1;36m' +LBLUE='\033[1;34m' +YELLOW='\033[1;33m' + +# 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year + +version=$(echo -e $GREEN"v. 1.03.2325"$LBLUE) +cmname=$(echo -e $YELLOW"containermanager"$LBLUE) +info=$(echo -e $GREEN"Im Terminal dw eingeben um direkt") +info2=$(echo -e $GREEN"in das Docker Verzeichnis zu kommen."$LBLUE) +one=$(echo -e $YELLOW"1"$LBLUE) +two=$(echo -e $YELLOW"2"$LBLUE) +three=$(echo -e $YELLOW"3"$LBLUE) +four=$(echo -e $YELLOW"4"$LBLUE) +five=$(echo -e $YELLOW"5"$LBLUE) +six=$(echo -e $YELLOW"6"$LBLUE) +seven=$(echo -e $YELLOW"7"$LBLUE) +eight=$(echo -e $YELLOW"8"$LBLUE) +Encoding=UTF-8 + +# i18n - Internationalization - Internationalisierung + +export TEXTDOMAIN=clidmanager +export TEXTDOMAINDIR="/usr/share/locale" + +list_dir_with_numbers() { + + unset dcname + + # Here Is is used to store all folders of a directory in an array + array=($(ls)) + + # This loop outputs the directory numbered + typeset -i i=0 max=${#array[*]} + while (( i < max )) + do + echo -e $LBLUE[$YELLOW$i$LBLUE] $LBLUE"${array[$i]}"$NORMAL + i=i+1 + done + + # Loop that only allows numbers + + while read -p "Ordner Nummer eingeben: " entrynumber + do + if [[ "$entrynumber" =~ ^[0-9]+$ && "$entrynumber" -lt "$i" ]] + then + dcname=${array[entrynumber]} + break + fi + done + +} + +newdir() { + clear + echo + echo -e $BLUE"Wird hier ein Name eingegeben,\nerstellt dies einen Ordner in /opt/containers/."$NORMAL + echo + echo -e $GREEN"Achtung hier bitte nur einen Ordner angeben!"$NORMAL + read -p "Containername eingeben: " dcname + sudo mkdir -p /opt/containers/$dcname + while [ -z $dcname ] + do + echo -e $GREEN"Ups da wurde kein Ordnername eingegeben..."$NORMAL + echo + read -p "Containername eingeben: " dcname + sudo mkdir -p /opt/containers/$dcname + done + if [ -d /opt/containers/$dcname ] + then + clear + echo + echo -e $GREEN"Ordner"$BLUE ${dcname} $GREEN"wurde erfolreich erstellt."$NORMAL + echo + echo "Sollen in dem erstellten Ordner weitere Ordner erstellt werden?" + echo "Für weitere Ordner y und Enter drücken. Mit Enter geht es zurück zum Programm." + read -p "" response + if [ "$response" == "y" ] + then + clear + echo -e $GREEN"Beispiel für 2 weitere Ordner in dem erstellen Ordner:" + echo + echo -e $BLUE"data config"$NORMAL + echo + echo -e $GREEN"Hier können auch mehr als 2 Ordner angegeben werden,"$NORMAL + read -p "Ordnernamen eingeben: " subfolders + for item in ${subfolders[*]} + do + sudo mkdir -p /opt/containers/$dcname/$item + done + while [ -z $item ] + do + echo -e $GREEN"Ups es wurden keine weiteren Ordner angegeben..." + echo -e $GREEN"Bitte nochmal"$NORMAL + read -p "Ordnernamen eingeben: " subfolders + for item in ${subfolders[*]} + do + sudo mkdir -p /opt/containers/$dcname/$item + done + done + clear + echo -e $GREEN"Ordner ...$BLUE" + echo + ls -x /opt/containers/$dcname/ + echo + echo -e $GREEN"wurden erstellt." + echo + read -p "Weiter mit Enter." + sudo clidmanager + else + sudo clidmanager + fi + else + echo -e $RED"Es trat ein fehler auf...\nBitte im Pfad nachsehen ob der Ordner existiert."$NORMAL + + fi +} + +list_containers() { + + clear + echo -e $ZYAN + docker ps --format 'table {{.Names}}\t{{.Status}}' + echo -e $NORMAL +} + +# dcname = Docker Container Name + +log() { + + unset dcname + clear + echo -e ""$NORMAL + echo -e $BLUE" -----Docker Compose Logs-----"$NORMAL + echo -e $GREEN"Unten sehen sie eine Liste der Container"$NORMAL + echo -e ""$ZYAN + cd /opt/containers/ && list_dir_with_numbers + cd $dcname && docker compose logs +} + +# dcstart = docker compose start + +dcstart() { + + unset dcname + clear + echo -e ""$NORMAL + echo -e $BLUE"Hier wird der angegebene Container bei änderung der yml Datei, neu erstellt." + echo -e "Und bei einem neuen Container wird dieser runtergeladen und gestartet."$NORMAL + echo + echo -e $BLUE" -----Docker Compose start-----" + echo -e $GREEN"Unten sehen sie eine Liste der Container"$NORMAL + echo -e ""$ZYAN + cd /opt/containers/ && list_dir_with_numbers + cd $dcname && docker compose up -d + +} + +edit_yml() { + + unset dcname + clear + echo -e ""$NORMAL + echo -e $BLUE" -----yml File edit-----" + echo -e $GREEN"Unten sehen sie eine Liste der Container"$NORMAL + echo -e ""$ZYAN + cd /opt/containers/ && list_dir_with_numbers + cd $dcname && nano docker-compose.yml + sudo clidmanager +} + +all_stop() { + + docker stop $(docker ps -a -q) +} + +all_start() { + + docker start $(docker ps -a -q) +} + +stack_update() { + + cd /opt/containers/traefik-crowdsec-stack/ && wait && \ + docker compose restart crowdsec && wait && \ + docker compose down && wait && \ + docker compose pull && wait && \ + docker compose up -d +} + +clear +echo -e $LBLUE"" +read -n 1 -s -r -p "$version | $cmname | + +[$one] Neuen Container Ordner erstellen + +[$two] yml Datei bearbeiten/erstellen + +[$three] Container mit up -d starten/neustarten + +[$four] Log Datei einsehen + +[$five] Alle Container stoppen + +[$six] Alle Container starten + +[$seven] Docker Spezial \"Crownsec-Treafik-Stack\" updaten + +[$eight] Laufende Container anzeigen + +$info +$info2 +====================================================== +Bitte eine Zahl von 1-8 wählen. + +Abbruch mit jeder anderen Taste ..." entry +clear + case $entry in + [1]* ) clear; newdir; exit;; + [2]* ) clear; edit_yml; exit;; + [3]* ) clear; dcstart; exit;; + [4]* ) clear; log; exit;; + [5]* ) clear; all_stop; exit;; + [6]* ) clear; all_start; exit;; + [7]* ) clear; stack_update; exit;; + [8]* ) clear; list_containers; exit;; + esac + +################ENDE####################### diff --git a/docker_work b/docker_work new file mode 100755 index 0000000..e4a7d47 --- /dev/null +++ b/docker_work @@ -0,0 +1,9 @@ +#!/usr/bin/bash + +clear +cd /opt/containers/ +echo +ls +echo +echo "Oben sehen sie eine liste der vorhandenen Ordner" +echo diff --git a/install b/install new file mode 100755 index 0000000..f20b030 --- /dev/null +++ b/install @@ -0,0 +1,88 @@ +#!/bin/bash + +######################################################## +######################################################## +# installer for simple management a docker container ## +# Author: Désiré Werner Menrath ## +# Email: polunga40@unity-mail.de ## +# Translate German to English with LibreTranslate ## +# Translatefiles edit with Poedit ## +# Use without warranty! ## +######################################################## +######################################################## + +Encoding=UTF-8 + +# i18n - Internationalization - Internationalisierung + +export TEXTDOMAIN=clidmanager +export TEXTDOMAINDIR="/usr/share/locale" + +############################################################################################################ +############################################################################################################ + +isgroup=$(cat /etc/group | grep docker) + +which compose >/dev/null + +if [ $? -ne 0 ] + then + echo "Docker Compose wird für die verwendung von clidmanager benötigt." + echo "Bitte das Paket docker compose installieren." + read -p "Zum beenden Enter drücken" + exit 0 + + +else + exists=$(grep -i "alias dm='sudo clidmanager'" ~/.bashrc | grep -i "alias clidmanager='sudo clidmanager'" ~/.bashrc | grep -i "alias dw='source docker_work'" ~/.bashrc) + if [ "$?" = "0" ] + then + + echo "$USER ALL = NOPASSWD:/usr/local/bin/clidmanager" > no_pwd_clidmanager + + sudo chown 0:0 no_pwd_clidmanager + + sudo cp -f clidmanager docker_work /usr/local/bin/ && sudo mv no_pwd_clidmanager /etc/sudoers.d/ + echo + echo "clidmanager intalliert." + echo + echo "Es wurden aliase angelegt..." + echo + echo "Bei der nächten anmeldung können sie clidmanager" + echo + echo "entweder über clidmanager oder über dm aufrufen." + echo + + read -p "Enter zum beenden drücken..." + + else + + echo "alias dm='sudo clidmanager'" >> ~/.bashrc + echo "alias clidmanager='sudo clidmanager'" >> ~/.bashrc + echo "alias dw='source docker_work'" >> ~/.bashrc + echo "$USER ALL = NOPASSWD:/usr/local/bin/clidmanager" > no_pwd_clidmanager + + sudo chown 0:0 no_pwd_clidmanager + sudo usermod -aG docker $USER + + sudo cp -f clidmanager docker_work /usr/local/bin/ && sudo mv no_pwd_clidmanager /etc/sudoers.d/ + echo + echo "clidmanager intalliert." + echo + echo "Es wurden aliase angelegt..." + echo + echo "Bei der nächten anmeldung können sie clidmanager" + echo + echo "entweder über clidmanager oder über dm aufrufen." + echo + + read -p "Enter zum beenden drücken..." + + fi + if [ -z $isgroup ] + then + sudo usermod -aG docker $USER + + fi +fi +