#!/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#######################