CLI_Docker_Manager/clidmanager
2025-03-23 21:47:58 +01:00

243 lines
6.9 KiB
Bash
Executable File

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