loki/mailing-project-menu #5

Merged
loki merged 2 commits from loki/mailing-project-menu into main 2025-12-15 14:13:03 +01:00
2 changed files with 63 additions and 19 deletions
+24 -9
View File
@@ -1,4 +1,4 @@
# mail.sh – Remote Datei-Downloader für PINC-Mails
# mail.sh – Remote Datei-Downloader für E-Mail-Dateien
**Wichtig:**
Bevor du das Skript verwendest, führe folgende Schritte aus:
@@ -19,19 +19,33 @@ Bevor du das Skript verwendest, führe folgende Schritte aus:
## Beschreibung
Dieses Skript lädt Dateien, die einem bestimmten Muster entsprechen, von einem Remote-Server herunter. Es sucht in allen Subdirectories unter `/Apps/easyname/run/pinc*/` nach Dateien, die mit der angegebenen Kundennummer beginnen.
Dieses Skript lädt E-Mail-Dateien (.eml), die einem bestimmten Muster entsprechen, von einem Remote-Server herunter. Es bietet ein interaktives Menü zur Auswahl des Projekts (pinc oder php-es-info) und sucht dann in allen Subdirectories unter `/Apps/easyname/run/<projekt>*/` nach Dateien, die mit der angegebenen Kundennummer beginnen.
## Nutzung
```bash
./mail.sh <Kundennummer>
./mail.sh
```
Das Skript führt Sie interaktiv durch folgende Schritte:
1. **Kundennummer eingeben:** Das Skript fragt nach der Kundennummer, die nicht leer sein darf.
2. **Projekt auswählen:** Wählen Sie zwischen:
- `1` für **pinc**
- `2` für **php-es-info**
**Beispiel:**
```bash
./mail.sh 123
./mail.sh
Bitte geben Sie eine Kundennummer ein:
Kundennummer: 123
Bitte wählen Sie ein Projekt:
1) pinc
2) php-es-info
Ihre Auswahl (1 oder 2): 1
```
Das Skript sucht dann nach allen Dateien, die mit `123-` beginnen, und lädt sie in ein lokales Verzeichnis `./123/` herunter.
Das Skript sucht dann nach allen `.eml`-Dateien, die mit `123` beginnen, und lädt sie in ein lokales Verzeichnis `./123/` herunter.
## Voraussetzungen
@@ -41,10 +55,11 @@ Das Skript sucht dann nach allen Dateien, die mit `123-` beginnen, und lädt sie
## Ablauf
1. Das Skript prüft, ob eine Nummer als Argument übergeben wurde.
2. Es verbindet sich per SSH mit dem Server und sucht in allen passenden Subdirectories nach Dateien, die mit `<Kundennummer>-` beginnen.
3. Gefundene Dateien werden in ein lokales Verzeichnis mit dem Namen der Nummer heruntergeladen (z.B. `./123/`).
4. Das lokale Verzeichnis wird automatisch erstellt, falls es noch nicht existiert.
1. Das Skript fragt interaktiv nach der Kundennummer (darf nicht leer sein).
2. Das Skript zeigt ein Menü zur Auswahl des Projekts (pinc oder php-es-info).
3. Es verbindet sich per SSH mit dem Server und sucht in allen passenden Subdirectories unter `/Apps/easyname/run/<projekt>*/` nach `.eml`-Dateien, die mit der eingegebenen Kundennummer beginnen.
4. Gefundene Dateien werden in ein lokales Verzeichnis mit dem Namen der Kundennummer heruntergeladen (z.B. `./123/`).
5. Das lokale Verzeichnis wird automatisch erstellt, falls es noch nicht existiert.
## Fehlerbehandlung
+38 -9
View File
@@ -1,26 +1,55 @@
#!/bin/bash
# Überprüfen, ob ein Parameter übergeben wurde
if [ -z "$1" ]; then
echo "Bitte geben Sie eine Nummer als Argument an. Beispiel: $0 123"
exit 1
# Kundennummer eingeben
while true; do
echo "Bitte geben Sie eine Kundennummer ein:"
read -p "Kundennummer: " customerNumber
if [ -z "$customerNumber" ]; then
echo "Kundennummer darf nicht leer sein."
echo ""
else
break
fi
done
# Definieren Sie die Verbindungsdetails
# Server und LUSER definieren
server="appdb02.in.easyname.com"
LUSER="${LUSER:?Bitte LUSER setzen!}" # Setzen Sie hier Ihren Benutzernamen ein, wenn LUSER nicht als Umgebungsvariable gesetzt ist
# Menu zur Auswahl des Remote-Directories
while true; do
echo "Bitte wählen Sie ein Projekt:"
echo "1) pinc"
echo "2) php-es-info"
read -p "Ihre Auswahl (1 oder 2): " choice
case $choice in
1)
remoteDir="pinc"
break
;;
2)
remoteDir="php-es-info"
break
;;
*)
echo "Ungültige Auswahl. Bitte wählen Sie 1 oder 2."
echo ""
;;
esac
done
# Remote-Directory überprüfen und Subdirectories auflisten, unter Verwendung von bash
remoteDirectories=$(ssh "$LUSER@$server" "bash -c 'ls -d /Apps/easyname/run/pinc*/*/'")
remoteDirectories=$(ssh "$LUSER@$server" "bash -c 'ls -d /Apps/easyname/run/${remoteDir}*/*/'")
# Wenn keine Verzeichnisse gefunden wurden, Skript beenden
if [ -z "$remoteDirectories" ]; then
echo "Keine Subdirectories in /Apps/easyname/run/pinc/ gefunden."
echo "Keine Subdirectories in /Apps/easyname/run/${remoteDir}/ gefunden."
exit 1
fi
localSavePath="$PWD/$1" # Setzt den lokalen Speicherpfad relativ zum aktuellen Verzeichnis
filePattern="$1-*"
localSavePath="$PWD/$customerNumber" # Setzt den lokalen Speicherpfad relativ zum aktuellen Verzeichnis
filePattern="$customerNumber*.eml"
# Schleife über die gefundenen Verzeichnisse und in jedem Verzeichnis nach Dateien suchen
fileList=""