- Internationalization (i18n) support added (English default, German translation)
- Installer updated to handle translation files (.mo) - All scripts updated to use gettext - Replaced Traefik-Crowdsec-Stack updater with own authelia-watcher-manager which works together with the docker project lxtools/authelia-watcher
This commit is contained in:
@@ -1,21 +1,22 @@
|
||||
Changelog for clidmanager
|
||||
My standard System: Debian 12 (Server)
|
||||
My standard System: Debian 13 (Server)
|
||||
create on 20-3-2025 by Désiré Werner Menrath
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
- Add comments
|
||||
- Add a simple singe docker [container] restart | stop | start
|
||||
with clidmanager
|
||||
|
||||
- write in English and add translation in German
|
||||
- Add a simple single docker rmi [container] a stop containers
|
||||
|
||||
|
||||
### Added
|
||||
### Added
|
||||
20-03-2025
|
||||
|
||||
- first 70 lines written for tests
|
||||
|
||||
|
||||
### Added
|
||||
### Added
|
||||
21-03-2025
|
||||
|
||||
- functions declared: Create new folder, edit yml files,
|
||||
@@ -27,7 +28,7 @@ create on 20-3-2025 by Désiré Werner Menrath
|
||||
- File no_pwd_clidmanager added in /etc/sudoers.d
|
||||
|
||||
|
||||
### Added
|
||||
### Added
|
||||
22-03-2025
|
||||
|
||||
- functions declared: Start/stop all containers,
|
||||
@@ -40,8 +41,17 @@ create on 20-3-2025 by Désiré Werner Menrath
|
||||
|
||||
- Numbering from now on in yellow for better readability
|
||||
|
||||
### Added
|
||||
### Added
|
||||
23-03-2025
|
||||
|
||||
- Docker directory for logs, edit yml files and start container
|
||||
is now displayed numbered, for easy handling.
|
||||
|
||||
### Added
|
||||
30-01-2026
|
||||
|
||||
- Internationalization (i18n) support added (English default, German translation)
|
||||
- Installer updated to handle translation files (.mo)
|
||||
- All scripts updated to use gettext
|
||||
- Replaced Traefik-Crowdsec-Stack updater with own authelia-watcher-manager which works
|
||||
together with the docker project lxtools/authelia-watcher
|
||||
84
README.md
84
README.md
@@ -1,3 +1,85 @@
|
||||
# CLI_Docker_Manager
|
||||
|
||||
Easy handling of Docker containers
|
||||
**CLI_Docker_Manager** is a bash-based command-line tool designed to simplify the management of Docker containers on Linux systems. It provides a user-friendly menu interface to handle common Docker Compose tasks without needing to remember complex commands.
|
||||
|
||||
## Features
|
||||
|
||||
- **Folder Management**: Easily create new container directories in `/opt/containers/` with optional subfolders (e.g., `data`, `config`).
|
||||
- **Compose Management**: Edit or create `docker-compose.yml` files directly using `nano`.
|
||||
- **Container Control**: Start, restart, and stop specific containers or all containers at once.
|
||||
- **Logs**: View logs for specific containers with ease.
|
||||
- **Overview**: List running containers and their status.
|
||||
- **Navigation**: Quickly jump to the container directory using the `dw` alias.
|
||||
- **Authelia Watcher Manager**: A specialized module to manage `lxtools/authelia-watcher`, including:
|
||||
- Viewing active iptables bans.
|
||||
- Manually unbanning IPs.
|
||||
- Managing the whitelist (DynDNS/Static).
|
||||
- Editing configuration.
|
||||
- **Localization**: Supports English (default) and German.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Linux OS (Tested on Debian 12 | 13, Linux Mint 21.* | 22.*)
|
||||
- Docker & Docker Compose installed.
|
||||
- `sudo` privileges.
|
||||
- `gettext` (for translations).
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone the repository or download the scripts.
|
||||
2. Make the installer executable:
|
||||
```bash
|
||||
chmod +x install.sh
|
||||
```
|
||||
3. Run the installer:
|
||||
```bash
|
||||
./install.sh
|
||||
```
|
||||
|
||||
The installer will:
|
||||
- Create aliases (`dm`, `clidmanager`, `dw`) in your `~/.bashrc`.
|
||||
- Configure `sudoers` to allow running `clidmanager` without a password.
|
||||
- Install translation files (`.mo`).
|
||||
- Add the user to the `docker` group if not already added.
|
||||
|
||||
## Usage
|
||||
|
||||
Start the tool by typing:
|
||||
```bash
|
||||
dm
|
||||
```
|
||||
or
|
||||
```bash
|
||||
clidmanager
|
||||
```
|
||||
|
||||
### Menu Options
|
||||
|
||||
1. **Create new container folder**: Sets up a directory structure in `/opt/containers/`.
|
||||
2. **Edit/Create yml file**: Opens the `docker-compose.yml` for the selected container.
|
||||
3. **Start/Restart container**: Runs `docker compose up -d` for the selected container.
|
||||
4. **View logs**: Shows logs for the selected container.
|
||||
5. **Stop all containers**: Stops all running Docker containers.
|
||||
6. **Start all containers**: Starts all stopped Docker containers.
|
||||
7. **Authelia Watcher Manager**: Specialized tools for the Authelia Watcher service.
|
||||
8. **Show running containers**: Displays a table of currently running containers.
|
||||
|
||||
### Quick Navigation
|
||||
Use the `dw` alias to quickly change your current directory to `/opt/containers/`:
|
||||
```bash
|
||||
dw
|
||||
```
|
||||
|
||||
## Localization
|
||||
|
||||
The tool automatically detects your system language.
|
||||
- **English**: Default.
|
||||
- **German**: Available if system locale is set to German.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
Use without warranty! This tool is provided as-is to help manage Docker environments.
|
||||
|
||||
## Author
|
||||
|
||||
Désiré Werner Menrath
|
||||
282
clidmanager
Executable file → Normal file
282
clidmanager
Executable file → Normal file
@@ -2,25 +2,28 @@
|
||||
|
||||
# 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
|
||||
# Email: polunga40@unity-mail.de
|
||||
# Use without warranty!
|
||||
|
||||
# 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year
|
||||
|
||||
NORMAL='\033[0m'
|
||||
GREEN='\033[1;32m'
|
||||
RED='\033[31;1;42m'
|
||||
BLUE='\033[30;1;34m'
|
||||
ZYAN='\033[30;1;36m'
|
||||
YELLOW='\033[1;33m'
|
||||
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)
|
||||
ZYAN='\033[30;1;36m'
|
||||
|
||||
export TEXTDOMAIN=clidmanager
|
||||
export TEXTDOMAINDIR="/usr/share/locale"
|
||||
|
||||
# Translations for header variables
|
||||
version_num="v. 2.01.3026"
|
||||
version=$(printf "${GREEN}%s${LBLUE}" "$version_num")
|
||||
cmname=$(printf "${YELLOW}%s${LBLUE}" "containermanager")
|
||||
info=$(echo -e "${GREEN}$(gettext "Enter 'dw' in terminal to go directly")")
|
||||
info2=$(echo -e "${GREEN}$(gettext "to the docker directory.")${NORMAL}")
|
||||
|
||||
one=$(echo -e $YELLOW"1"$LBLUE)
|
||||
two=$(echo -e $YELLOW"2"$LBLUE)
|
||||
three=$(echo -e $YELLOW"3"$LBLUE)
|
||||
@@ -29,102 +32,85 @@ 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
|
||||
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
|
||||
|
||||
while read -p "$(gettext "Enter folder number: ")" 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 -e $BLUE"$(gettext "If a name is entered here,\nit creates a folder in /opt/containers/.")"$NORMAL
|
||||
echo
|
||||
echo -e $GREEN"Achtung hier bitte nur einen Ordner angeben!"$NORMAL
|
||||
read -p "Containername eingeben: " dcname
|
||||
echo -e $GREEN"$(gettext "Attention, please specify only one folder here!")"$NORMAL
|
||||
read -p "$(gettext "Enter container name: ")" dcname
|
||||
sudo mkdir -p /opt/containers/$dcname
|
||||
while [ -z $dcname ]
|
||||
do
|
||||
echo -e $GREEN"Ups da wurde kein Ordnername eingegeben..."$NORMAL
|
||||
echo -e $GREEN"$(gettext "Oops, no folder name was entered...")"$NORMAL
|
||||
echo
|
||||
read -p "Containername eingeben: " dcname
|
||||
read -p "$(gettext "Enter container name: ")" 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 -e $GREEN"$(gettext "Folder")"$BLUE ${dcname} $GREEN"$(gettext "was successfully created.")"$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."
|
||||
echo "$(gettext "Should additional folders be created in the created folder?")"
|
||||
echo "$(gettext "Press y and Enter for more folders. Press Enter to return to the program.")"
|
||||
read -p "" response
|
||||
if [ "$response" == "y" ]
|
||||
then
|
||||
clear
|
||||
echo -e $GREEN"Beispiel für 2 weitere Ordner in dem erstellen Ordner:"
|
||||
echo -e $GREEN"$(gettext "Example for 2 additional folders in the created folder:")"
|
||||
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
|
||||
echo -e $GREEN"$(gettext "More than 2 folders can be specified here,")"$NORMAL
|
||||
read -p "$(gettext "Enter folder names: ")" 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
|
||||
echo -e $GREEN"$(gettext "Oops, no further folders were specified...")"
|
||||
echo -e $GREEN"$(gettext "Please try again")"$NORMAL
|
||||
read -p "$(gettext "Enter folder names: ")" subfolders
|
||||
for item in ${subfolders[*]}
|
||||
do
|
||||
sudo mkdir -p /opt/containers/$dcname/$item
|
||||
done
|
||||
done
|
||||
clear
|
||||
echo -e $GREEN"Ordner ...$BLUE"
|
||||
echo -e $GREEN"$(gettext "Folder ...")$BLUE"
|
||||
echo
|
||||
ls -x /opt/containers/$dcname/
|
||||
echo
|
||||
echo -e $GREEN"wurden erstellt."
|
||||
echo -e $GREEN"$(gettext "were created.")"
|
||||
echo
|
||||
read -p "Weiter mit Enter."
|
||||
read -p "$(gettext "Continue with 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
|
||||
echo -e $RED"$(gettext "An error occurred...\nPlease check the path to see if the folder exists.")"$NORMAL
|
||||
|
||||
fi
|
||||
}
|
||||
@@ -144,8 +130,8 @@ 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 $BLUE" -----$(gettext "Docker Compose Logs")-----"$NORMAL
|
||||
echo -e $GREEN"$(gettext "Below you see a list of containers")"$NORMAL
|
||||
echo -e ""$ZYAN
|
||||
cd /opt/containers/ && list_dir_with_numbers
|
||||
cd $dcname && docker compose logs
|
||||
@@ -158,11 +144,11 @@ 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 -e $BLUE"$(gettext "Here the specified container is recreated when the yml file changes.")"
|
||||
echo -e "$(gettext "And for a new container, it is downloaded and started.")"$NORMAL
|
||||
echo
|
||||
echo -e $BLUE" -----Docker Compose start-----"
|
||||
echo -e $GREEN"Unten sehen sie eine Liste der Container"$NORMAL
|
||||
echo -e $BLUE" -----$(gettext "Docker Compose start")-----"
|
||||
echo -e $GREEN"$(gettext "Below you see a list of containers")"$NORMAL
|
||||
echo -e ""$ZYAN
|
||||
cd /opt/containers/ && list_dir_with_numbers
|
||||
cd $dcname && docker compose up -d
|
||||
@@ -174,8 +160,8 @@ 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 $BLUE" -----$(gettext "yml File edit")-----"
|
||||
echo -e $GREEN"$(gettext "Below you see a list of containers")"$NORMAL
|
||||
echo -e ""$ZYAN
|
||||
cd /opt/containers/ && list_dir_with_numbers
|
||||
cd $dcname && nano docker-compose.yml
|
||||
@@ -192,51 +178,137 @@ all_start() {
|
||||
docker start $(docker ps -a -q)
|
||||
}
|
||||
|
||||
stack_update() {
|
||||
watcher_management() {
|
||||
# Find container name dynamically via label
|
||||
REAL_CONTAINER_NAME=$(docker ps --filter "label=service=authelia-watcher" --format "{{.Names}}")
|
||||
|
||||
cd /opt/containers/traefik-crowdsec-stack/ && wait && \
|
||||
docker compose restart crowdsec && wait && \
|
||||
docker compose down && wait && \
|
||||
docker compose pull && wait && \
|
||||
docker compose up -d
|
||||
if [ -z "$REAL_CONTAINER_NAME" ]; then
|
||||
clear
|
||||
echo -e "${RED}$(gettext "Error: Watcher container not found!")${NORMAL}"
|
||||
echo -e "$(gettext "Make sure the label 'service=authelia-watcher' is set.")"
|
||||
read -p "$(gettext "Press Enter to exit...")"
|
||||
clear
|
||||
return
|
||||
fi
|
||||
|
||||
while true; do
|
||||
clear
|
||||
echo -e "${LBLUE}--- Authelia Watcher: Management & Config ---${NORMAL}"
|
||||
echo -e "$(gettext "Found Container:") ${GREEN}$REAL_CONTAINER_NAME${NORMAL}"
|
||||
echo "======================================================"
|
||||
echo -e "[$one] $(gettext "View active bans (iptables)")"
|
||||
echo -e "[$two] $(gettext "Manually unban an IP")"
|
||||
echo -e "[$three] $(gettext "Whitelist Management (DynDNS/Static)")"
|
||||
echo -e "[$four] $(gettext "Edit JSON Configuration")"
|
||||
echo -e "[$five] $(gettext "View Watcher Logs")"
|
||||
echo -e "[$six] $(gettext "Back to Main Menu")"
|
||||
echo "======================================================"
|
||||
read -n 1 -s -r -p "$(gettext "Select an option: ")" wopt
|
||||
|
||||
WHITELIST_PATH="/opt/containers/authelia-watcher/config/whitelist.txt"
|
||||
BLACKLIST_PATH="/opt/containers/authelia-watcher/config/blacklist.txt"
|
||||
|
||||
case $wopt in
|
||||
1)
|
||||
clear
|
||||
(echo "$(gettext "ACTIVE BANS (iptables):")"; echo "---------------------------"; \
|
||||
iptables -L INPUT -n --line-numbers | grep DROP) | less
|
||||
;;
|
||||
2)
|
||||
echo -e "\n"
|
||||
read -p "$(gettext "Enter IP address to unban: ")" IP_TO_UNBAN
|
||||
if [ -n "$IP_TO_UNBAN" ]; then
|
||||
while iptables -L INPUT -n | grep -q "$IP_TO_UNBAN"; do
|
||||
iptables -D INPUT -s "$IP_TO_UNBAN" -j DROP 2>/dev/null
|
||||
done
|
||||
[ -f "$BLACKLIST_PATH" ] && sed -i "/^$IP_TO_UNBAN$/d" "$BLACKLIST_PATH"
|
||||
printf "\n${GREEN}$(gettext "IP %s has been successfully removed from firewall and blacklist.")${NORMAL}\n" "$IP_TO_UNBAN"
|
||||
read -p "$(gettext "Press Enter...")"
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
clear
|
||||
echo -e "${LBLUE}--- $(gettext "Whitelist Management") ---${NORMAL}"
|
||||
echo "1) $(gettext "Add IP to Whitelist")"
|
||||
echo "2) $(gettext "Remove IP from Whitelist")"
|
||||
echo "3) $(gettext "Show Whitelist")"
|
||||
read -n 1 -s -r -p "$(gettext "Option: ")" wl_opt
|
||||
echo -e "\n"
|
||||
case $wl_opt in
|
||||
1)
|
||||
read -p "$(gettext "Enter IP to whitelist: ")" NEW_WL
|
||||
if [ -n "$NEW_WL" ]; then
|
||||
if ! grep -Fxq "$NEW_WL" "$WHITELIST_PATH" 2>/dev/null; then
|
||||
echo "$NEW_WL" >> "$WHITELIST_PATH"
|
||||
# Sofort entbannen, falls vorhanden
|
||||
while iptables -L INPUT -n | grep -q "$NEW_WL"; do
|
||||
iptables -D INPUT -s "$NEW_WL" -j DROP 2>/dev/null
|
||||
done
|
||||
sed -i "/^$NEW_WL$/d" "$BLACKLIST_PATH" 2>/dev/null
|
||||
printf "${GREEN}$(gettext "✅ IP %s added to whitelist and unbanned.")${NORMAL}\n" "$NEW_WL"
|
||||
else
|
||||
echo "$(gettext "IP already in whitelist.")"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
read -p "$(gettext "Enter IP to remove: ")" RM_WL
|
||||
[ -n "$RM_WL" ] && sed -i "/^$RM_WL$/d" "$WHITELIST_PATH"
|
||||
printf "${RED}$(gettext "❌ IP %s removed from whitelist.")${NORMAL}\n" "$RM_WL"
|
||||
;;
|
||||
3)
|
||||
echo "$(gettext "Current Whitelist:")"
|
||||
[ -s "$WHITELIST_PATH" ] && cat "$WHITELIST_PATH" || echo "$(gettext "Whitelist is empty.")"
|
||||
;;
|
||||
esac
|
||||
read -p "$(gettext "Press Enter...")"
|
||||
;;
|
||||
4)
|
||||
nano /opt/containers/authelia-watcher/config/watcher-config.json
|
||||
docker restart "$REAL_CONTAINER_NAME"
|
||||
;;
|
||||
5)
|
||||
docker logs -f --tail 50 "$REAL_CONTAINER_NAME"
|
||||
;;
|
||||
6)
|
||||
sudo clidmanager # Back to main menu
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
clear
|
||||
echo -e $LBLUE""
|
||||
read -n 1 -s -r -p "$version | $cmname |
|
||||
main_menu() {
|
||||
while true; do
|
||||
clear
|
||||
echo -e "$version | $cmname |"
|
||||
echo "======================================="
|
||||
echo -e "[$one] $(gettext "Create new container folder")"
|
||||
echo -e "[$two] $(gettext "Edit/Create yml file")"
|
||||
echo -e "[$three] $(gettext "Start/Restart container")"
|
||||
echo -e "[$four] $(gettext "View logs")"
|
||||
echo -e "[$five] $(gettext "Stop all containers")"
|
||||
echo -e "[$six] $(gettext "Start all containers")"
|
||||
echo -e "[$seven] $(gettext "Authelia Watcher Manager")"
|
||||
echo -e "[$eight] $(gettext "Show running containers")"
|
||||
echo "======================================="
|
||||
echo "$info"
|
||||
echo "$info2"
|
||||
read -n 1 -s -r -p "$(gettext "Choose 1-8: ")" entry
|
||||
|
||||
case $entry in
|
||||
1) newdir; exit ;;
|
||||
2) edit_yml; exit ;;
|
||||
3) dcstart; exit ;;
|
||||
4) log; exit ;;
|
||||
5) all_stop; exit ;;
|
||||
6) all_start; exit ;;
|
||||
7) watcher_management; exit ;;
|
||||
8) list_containers; exit ;;
|
||||
*) clear; exit ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
[$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#######################
|
||||
main_menu
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#!/usr/bin/bash
|
||||
export TEXTDOMAIN=clidmanager
|
||||
export TEXTDOMAINDIR="/usr/share/locale"
|
||||
|
||||
clear
|
||||
cd /opt/containers/
|
||||
echo
|
||||
ls
|
||||
echo
|
||||
echo "Oben sehen sie eine liste der vorhandenen Ordner"
|
||||
echo "$(gettext "Above you see a list of existing folders")"
|
||||
echo
|
||||
|
||||
@@ -1,25 +1,14 @@
|
||||
#!/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
|
||||
# installer for simple management a docker container
|
||||
# Author: Désiré Werner Menrath
|
||||
# Email: polunga40@unity-mail.de
|
||||
# Use without warranty!
|
||||
|
||||
# i18n - Internationalization - Internationalisierung
|
||||
|
||||
export TEXTDOMAIN=clidmanager
|
||||
export TEXTDOMAINDIR="/usr/share/locale"
|
||||
|
||||
############################################################################################################
|
||||
############################################################################################################
|
||||
export TEXTDOMAIN=install
|
||||
export TEXTDOMAINDIR="./locale"
|
||||
|
||||
install() {
|
||||
|
||||
@@ -27,7 +16,7 @@ install() {
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "alias dm='sudo clidmanager'" >> ~/.bashrc
|
||||
echo "Alias dm angelegt... 15%"
|
||||
echo "$(gettext "Alias dm created... 15%")"
|
||||
check=""
|
||||
sleep 0.8
|
||||
else
|
||||
@@ -37,7 +26,7 @@ install() {
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "alias clidmanager='sudo clidmanager'" >> ~/.bashrc
|
||||
echo "Alias clidmanager angelegt... 30%"
|
||||
echo "$(gettext "Alias clidmanager created... 30%")"
|
||||
check1=""
|
||||
sleep 0.8
|
||||
else
|
||||
@@ -47,7 +36,7 @@ install() {
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "alias dw='source docker_work'" >> ~/.bashrc
|
||||
echo "Alias clidmanager angelegt... 45%"
|
||||
echo "$(gettext "Alias dw created... 45%")"
|
||||
check2=""
|
||||
sleep 0.8
|
||||
else
|
||||
@@ -64,80 +53,88 @@ install() {
|
||||
exit 0
|
||||
else
|
||||
sudo cp -f clidmanager docker_work /usr/local/bin/ && sudo mv no_pwd_clidmanager /etc/sudoers.d/
|
||||
|
||||
# Install translation file
|
||||
|
||||
sudo mkdir -p /usr/share/locale/de/LC_MESSAGES/
|
||||
sudo cp -f ./locale/de/clidmanager.mo /usr/share/locale/de/LC_MESSAGES/clidmanager.mo
|
||||
|
||||
|
||||
if [ "$check" = "ok" ] && [ "$check1" = "ok" ] && [ "$check2" = "ok" ]
|
||||
then
|
||||
Bar=30
|
||||
Bar2=60
|
||||
echo "no_pwd_clidmanager installiert... $Bar%"
|
||||
echo "$(gettext "no_pwd_clidmanager installed...") $Bar%"
|
||||
sleep 0.8
|
||||
echo "docker_work installiert... $Bar2%"
|
||||
echo "$(gettext "docker_work installed...") $Bar2%"
|
||||
sleep 0.8
|
||||
echo "clidmanager installiert... 90%"
|
||||
echo "$(gettext "clidmanager installed... 90%")"
|
||||
sleep 0.8
|
||||
echo
|
||||
echo "Update installiert. 100%"
|
||||
echo "$(gettext "Update installed. 100%")"
|
||||
echo
|
||||
|
||||
else
|
||||
Bar=60
|
||||
Bar2=75
|
||||
echo "no_pwd_clidmanager installiert... $Bar%"
|
||||
echo "$(gettext "no_pwd_clidmanager installed...") $Bar%"
|
||||
sleep 0.8
|
||||
echo "docker_work installiert... $Bar2%"
|
||||
echo "$(gettext "docker_work installed...") $Bar2%"
|
||||
sleep 0.8
|
||||
echo "clidmanager installiert... 90%"
|
||||
echo "$(gettext "clidmanager installed... 90%")"
|
||||
sleep 0.8
|
||||
sudo usermod -aG docker $USER >/dev/null 2>&1
|
||||
sleep 0.8
|
||||
echo "Benutzer der Gruppe Docker hinzugefügt... 100%"
|
||||
echo "$(gettext "User added to Docker group... 100%")"
|
||||
echo
|
||||
echo "Bei der nächten anmeldung können sie clidmanager"
|
||||
echo "$(gettext "At the next login you can call clidmanager")"
|
||||
echo
|
||||
echo "entweder über clidmanager oder über dm aufrufen."
|
||||
echo "$(gettext "either via clidmanager or via dm.")"
|
||||
echo
|
||||
fi
|
||||
|
||||
read -p "Enter zum beenden drücken..."
|
||||
read -p "$(gettext "Press Enter to exit...")"
|
||||
fi
|
||||
}
|
||||
|
||||
remove() {
|
||||
|
||||
sudo rm -f /usr/local/bin/clidmanager /usr/local/bin/docker_work && sudo rm /etc/sudoers.d/no_pwd_clidmanager
|
||||
sudo rm -f /usr/share/locale/de/LC_MESSAGES/clidmanager.mo
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 0
|
||||
else
|
||||
echo "docker_work entfernt.... 15%"
|
||||
echo "$(gettext "docker_work removed.... 15%")"
|
||||
sleep 0.5
|
||||
echo "no_pwd_clidmanager.... 30%"
|
||||
echo "$(gettext "no_pwd_clidmanager removed.... 30%")"
|
||||
sleep 0.5
|
||||
echo "clidmanager entfernt.... 45%"
|
||||
echo "$(gettext "clidmanager removed.... 45%")"
|
||||
sleep 0.5
|
||||
sed -i -e /"alias dm='sudo clidmanager'"/d ~/.bashrc && \
|
||||
echo "Alias dm entfernt.... 60%"
|
||||
echo "$(gettext "Alias dm removed.... 60%")"
|
||||
sleep 0.5
|
||||
sed -i -e /"alias clidmanager='sudo clidmanager'"/d ~/.bashrc && \
|
||||
echo "Alias clidmanager entfernt.... 75%"
|
||||
echo "$(gettext "Alias clidmanager removed.... 75%")"
|
||||
sleep 0.5
|
||||
sed -i -e /"alias dw='source docker_work'"/d ~/.bashrc
|
||||
echo "Alias dw entfernt.... 90%"
|
||||
echo "$(gettext "Alias dw removed.... 90%")"
|
||||
sleep 0.5
|
||||
echo "clidmanager vollständig entfernt.... 100%"
|
||||
echo "$(gettext "clidmanager completely removed.... 100%")"
|
||||
sleep 0.5
|
||||
echo
|
||||
read -p "Enter zum beenden drücken..."
|
||||
read -p "$(gettext "Press Enter to exit...")"
|
||||
fi
|
||||
}
|
||||
|
||||
which clidmanager >/dev/null
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "Möchten sie updaten/reinstallieren oder clidmanager deinstallieren?"
|
||||
echo "$(gettext "Do you want to update/reinstall or uninstall clidmanager?")"
|
||||
echo
|
||||
echo "Update/reinstall: y drücken, deinstallieren r drücken"
|
||||
echo "$(gettext "Update/reinstall: press y, uninstall: press r")"
|
||||
echo
|
||||
read -n 1 -s -r -p "Abbruch mit jeder anderen Taste..." result
|
||||
read -n 1 -s -r -p "$(gettext "Cancel with any other key...")" result
|
||||
case $result in
|
||||
[y]* ) clear; install; exit;;
|
||||
[Y]* ) clear; install; exit;;
|
||||
@@ -151,9 +148,9 @@ else
|
||||
docker compose version >/dev/null 2>&1
|
||||
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"
|
||||
echo "$(gettext "Docker Compose is required to use clidmanager.")"
|
||||
echo "$(gettext "Please install the docker compose package.")"
|
||||
read -p "$(gettext "Press Enter to exit")"
|
||||
exit 0
|
||||
else
|
||||
install
|
||||
BIN
locale/de/LC_MESSAGES/install.mo
Normal file
BIN
locale/de/LC_MESSAGES/install.mo
Normal file
Binary file not shown.
BIN
locale/de/clidmanager.mo
Normal file
BIN
locale/de/clidmanager.mo
Normal file
Binary file not shown.
Reference in New Issue
Block a user