243 lines
6.9 KiB
Bash
Executable File
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#######################
|