first commit
This commit is contained in:
parent
023626fbce
commit
7cbfef40b7
47
Changelog
Normal file
47
Changelog
Normal file
@ -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.
|
242
clidmanager
Executable file
242
clidmanager
Executable file
@ -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#######################
|
9
docker_work
Executable file
9
docker_work
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
clear
|
||||||
|
cd /opt/containers/
|
||||||
|
echo
|
||||||
|
ls
|
||||||
|
echo
|
||||||
|
echo "Oben sehen sie eine liste der vorhandenen Ordner"
|
||||||
|
echo
|
88
install
Executable file
88
install
Executable file
@ -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
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user