Compare commits
11 Commits
02509c5615
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 270f2fca0c | |||
| 3fcc434510 | |||
| 6175c38117 | |||
| 4272f5bc24 | |||
| 2e6e8c350f | |||
| 1ef19638e6 | |||
| 4a9bf3247a | |||
| 3be5ab9edd | |||
| 3f6b07d343 | |||
| 4af61e614b | |||
| a71807d3b6 |
@@ -6,3 +6,4 @@ Nützliche Skripte
|
|||||||
|----------|----------|
|
|----------|----------|
|
||||||
| `restic_env_erzeugen.sh` | Erzeugt Umgebungsvariablen `.env` muss im Ordner `/root` angelegt werden, danach: `restic init` und dann erst Backup durchführen |
|
| `restic_env_erzeugen.sh` | Erzeugt Umgebungsvariablen `.env` muss im Ordner `/root` angelegt werden, danach: `restic init` und dann erst Backup durchführen |
|
||||||
| `ssh_manager.sh` | Zielsystem aussuchen und SSH Verbindung aufbauen, grafisches Menü|
|
| `ssh_manager.sh` | Zielsystem aussuchen und SSH Verbindung aufbauen, grafisches Menü|
|
||||||
|
| `ensure_zerotier.sh` | stellt sicher dass der Container `zerotier` läuft |
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
CONTAINER_NAME="zerotier"
|
||||||
|
|
||||||
|
# Prüfen, ob der Container existiert
|
||||||
|
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}\$"; then
|
||||||
|
echo "Container '${CONTAINER_NAME}' existiert."
|
||||||
|
else
|
||||||
|
echo "Container '${CONTAINER_NAME}' existiert nicht!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prüfen, ob der Container läuft
|
||||||
|
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}\$"; then
|
||||||
|
echo "Container '${CONTAINER_NAME}' läuft bereits."
|
||||||
|
else
|
||||||
|
echo "Container '${CONTAINER_NAME}' läuft nicht – starte ihn..."
|
||||||
|
docker start "${CONTAINER_NAME}"
|
||||||
|
fi
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Eingabedatei
|
|
||||||
INPUT_FILE="Homelab.mxtsessions"
|
|
||||||
# Ausgabedatei
|
|
||||||
OUTPUT_FILE="serverliste.csv"
|
|
||||||
|
|
||||||
# Kopfzeile der CSV schreiben
|
|
||||||
echo "Name,Adresse / Host" > "$OUTPUT_FILE"
|
|
||||||
|
|
||||||
# Daten extrahieren und formatieren
|
|
||||||
grep -oP '^[^=]+=#109#0%[^%]+' "$INPUT_FILE" | while IFS= read -r line; do
|
|
||||||
name=$(echo "$line" | cut -d'=' -f1 | sed 's/.*\\n//')
|
|
||||||
host=$(echo "$line" | cut -d'%' -f2)
|
|
||||||
echo "$name,$host" >> "$OUTPUT_FILE"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Export abgeschlossen: $OUTPUT_FILE"
|
|
||||||
+87
-18
@@ -1,39 +1,108 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Datei mit Servernamen und IP-Adressen
|
# Konfigurationsvariablen
|
||||||
server_file="serverliste.csv"
|
FILE_URL="http://fileserver.fritz.box/Mobaxterm/Homelab.mxtsessions"
|
||||||
|
INPUT_FILE="Homelab.mxtsessions"
|
||||||
|
OUTPUT_FILE="serverliste.csv"
|
||||||
|
LOG_FILE="script.log"
|
||||||
|
LOG_RETENTION_DAYS=2 # Log-Einträge älter als X Tage werden entfernt
|
||||||
|
|
||||||
# Arrays für Servernamen und IP-Adressen initialisieren
|
log() {
|
||||||
|
echo "[$(date +"%Y-%m-%d %H:%M:%S")] $1" | tee -a "$LOG_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
clean_old_logs() {
|
||||||
|
tmp_log="${LOG_FILE}.tmp"
|
||||||
|
cutoff_date=$(date -d "-${LOG_RETENTION_DAYS} days" +'%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
awk -v cutoff="$cutoff_date" '
|
||||||
|
/^\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\]/ {
|
||||||
|
timestamp = substr($0, 2, 19)
|
||||||
|
if (timestamp >= cutoff) print $0
|
||||||
|
next
|
||||||
|
}
|
||||||
|
# Alle anderen Zeilen behalten (auch ohne Zeitstempel)
|
||||||
|
{ print $0 }
|
||||||
|
' "$LOG_FILE" > "$tmp_log" && mv "$tmp_log" "$LOG_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
download_file() {
|
||||||
|
rm -f "$INPUT_FILE" 2>/dev/null
|
||||||
|
if wget -q "$FILE_URL" -O "$INPUT_FILE"; then
|
||||||
|
log "Datei erfolgreich heruntergeladen."
|
||||||
|
else
|
||||||
|
log "Fehler: Datei konnte nicht heruntergeladen werden. Skript wird beendet."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
extract_data() {
|
||||||
|
echo "Name,Host,Port,Benutzer" > "$OUTPUT_FILE"
|
||||||
|
awk '
|
||||||
|
/^\[Bookmarks/ { in_section=1; next }
|
||||||
|
/^\[/ && !/^\[Bookmarks/ { in_section=0 }
|
||||||
|
in_section && /=#109#0%/ {
|
||||||
|
split($0, parts, "=")
|
||||||
|
name = parts[1]
|
||||||
|
split(parts[2], details, "%")
|
||||||
|
host = details[2]
|
||||||
|
port = details[3]
|
||||||
|
user = details[4]
|
||||||
|
if (host != "") {
|
||||||
|
if (port == "") port = "22"
|
||||||
|
if (user == "") user = "root"
|
||||||
|
print name "," host "," port "," user
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' "$INPUT_FILE" >> "$OUTPUT_FILE"
|
||||||
|
log "Daten extrahiert und in $OUTPUT_FILE gespeichert."
|
||||||
|
}
|
||||||
|
|
||||||
|
read_server_list() {
|
||||||
server_names=()
|
server_names=()
|
||||||
ip_addresses=()
|
ip_addresses=()
|
||||||
|
port_numbers=()
|
||||||
# Datei einlesen und Arrays füllen
|
usernames=()
|
||||||
while IFS="," read -r name ip; do
|
while IFS="," read -r name ip port user; do
|
||||||
server_names+=("$name")
|
server_names+=("$name")
|
||||||
ip_addresses+=("$ip")
|
ip_addresses+=("$ip")
|
||||||
done < <(tail -n +2 "$server_file")
|
port_numbers+=("$port")
|
||||||
|
usernames+=("$user")
|
||||||
|
done < <(tail -n +2 "$OUTPUT_FILE")
|
||||||
|
log "Serverliste erfolgreich eingelesen."
|
||||||
|
}
|
||||||
|
|
||||||
# Hauptmenü in einer Schleife anzeigen
|
show_menu() {
|
||||||
while true; do
|
while true; do
|
||||||
# Erzeuge die Einträge für das Whiptail-Menü
|
|
||||||
menu_entries=()
|
menu_entries=()
|
||||||
for i in "${!server_names[@]}"; do
|
for i in "${!server_names[@]}"; do
|
||||||
menu_entries+=("$i" "${server_names[i]} (${ip_addresses[i]})")
|
menu_entries+=("$i" "${server_names[i]} (${ip_addresses[i]}:${port_numbers[i]})")
|
||||||
done
|
done
|
||||||
menu_entries+=("q" "Ende")
|
menu_entries+=("q" "Ende")
|
||||||
|
|
||||||
# Zeige das Whiptail-Menü an
|
gui_choice=$(whiptail --title "Serverauswahl" \
|
||||||
gui_choice=$(whiptail --title "Serverauswahl" --menu "Wähle einen Server aus:" 20 78 10 "${menu_entries[@]}" 3>&1 1>&2 2>&3)
|
--menu "Wähle einen Server aus:" 20 90 10 \
|
||||||
|
"${menu_entries[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
# Überprüfe die Auswahl
|
|
||||||
if [[ $? -ne 0 || "$gui_choice" == "q" ]]; then
|
if [[ $? -ne 0 || "$gui_choice" == "q" ]]; then
|
||||||
echo "Programm beendet."
|
log "Benutzer hat das Programm beendet."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Verarbeite die Serverauswahl
|
|
||||||
index=$gui_choice
|
index=$gui_choice
|
||||||
echo "Verbinde zu ${server_names[index]} (${ip_addresses[index]})..."
|
log "Verbinde zu ${server_names[index]} (${usernames[index]}@${ip_addresses[index]}:${port_numbers[index]})..."
|
||||||
ssh ${ip_addresses[index]}
|
ssh -p "${port_numbers[index]}" "${usernames[index]}@${ip_addresses[index]}"
|
||||||
|
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
[[ -f "$LOG_FILE" ]] && clean_old_logs
|
||||||
|
|
||||||
|
log "Skript gestartet."
|
||||||
|
download_file
|
||||||
|
extract_data
|
||||||
|
read_server_list
|
||||||
|
show_menu
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
|
|||||||
Reference in New Issue
Block a user