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:** **Wichtig:**
Bevor du das Skript verwendest, führe folgende Schritte aus: 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 ## 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 ## Nutzung
```bash ```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:** **Beispiel:**
```bash ```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 ## Voraussetzungen
@@ -41,10 +55,11 @@ Das Skript sucht dann nach allen Dateien, die mit `123-` beginnen, und lädt sie
## Ablauf ## Ablauf
1. Das Skript prüft, ob eine Nummer als Argument übergeben wurde. 1. Das Skript fragt interaktiv nach der Kundennummer (darf nicht leer sein).
2. Es verbindet sich per SSH mit dem Server und sucht in allen passenden Subdirectories nach Dateien, die mit `<Kundennummer>-` beginnen. 2. Das Skript zeigt ein Menü zur Auswahl des Projekts (pinc oder php-es-info).
3. Gefundene Dateien werden in ein lokales Verzeichnis mit dem Namen der Nummer heruntergeladen (z.B. `./123/`). 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. Das lokale Verzeichnis wird automatisch erstellt, falls es noch nicht existiert. 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 ## Fehlerbehandlung
+38 -9
View File
@@ -1,26 +1,55 @@
#!/bin/bash #!/bin/bash
# Überprüfen, ob ein Parameter übergeben wurde # Kundennummer eingeben
if [ -z "$1" ]; then while true; do
echo "Bitte geben Sie eine Nummer als Argument an. Beispiel: $0 123" echo "Bitte geben Sie eine Kundennummer ein:"
exit 1 read -p "Kundennummer: " customerNumber
if [ -z "$customerNumber" ]; then
echo "Kundennummer darf nicht leer sein."
echo ""
else
break
fi fi
done
# Definieren Sie die Verbindungsdetails # Server und LUSER definieren
server="appdb02.in.easyname.com" server="appdb02.in.easyname.com"
LUSER="${LUSER:?Bitte LUSER setzen!}" # Setzen Sie hier Ihren Benutzernamen ein, wenn LUSER nicht als Umgebungsvariable gesetzt ist 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 # 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 # Wenn keine Verzeichnisse gefunden wurden, Skript beenden
if [ -z "$remoteDirectories" ]; then if [ -z "$remoteDirectories" ]; then
echo "Keine Subdirectories in /Apps/easyname/run/pinc/ gefunden." echo "Keine Subdirectories in /Apps/easyname/run/${remoteDir}/ gefunden."
exit 1 exit 1
fi fi
localSavePath="$PWD/$1" # Setzt den lokalen Speicherpfad relativ zum aktuellen Verzeichnis localSavePath="$PWD/$customerNumber" # Setzt den lokalen Speicherpfad relativ zum aktuellen Verzeichnis
filePattern="$1-*" filePattern="$customerNumber*.eml"
# Schleife über die gefundenen Verzeichnisse und in jedem Verzeichnis nach Dateien suchen # Schleife über die gefundenen Verzeichnisse und in jedem Verzeichnis nach Dateien suchen
fileList="" fileList=""