merged connect and legacy directorys and adapted corresponding readme

This commit is contained in:
2025-09-11 10:57:16 +02:00
parent 81915ddee9
commit 541d173a18
6 changed files with 67 additions and 97 deletions
+67 -4
View File
@@ -1,16 +1,79 @@
# Legacy Bash-Snippets
# Connect Tools
Skripte für die Arbeit auf **easyname Legacy-Infrastruktur**.
SSH-Verbindungstools und Shortcuts für den schnellen Zugriff auf easyname-Infrastruktur.
---
## Enthaltene Skripte
## Inhaltsverzeichnis
- [Übersicht](#übersicht)
- [Enthaltene Tools](#enthaltene-tools)
- [Voraussetzungen](#voraussetzungen)
- [Lizenz / Sichtbarkeit](#lizenz--sichtbarkeit)
---
## Übersicht
Die Connect-Tools vereinfachen den Zugriff auf verschiedene easyname-Server durch intelligente SSH-Shortcuts mit Kerberos-Authentifizierung. Sie reduzieren wiederkehrende Eingaben und ermöglichen schnelle Verbindungen zu Web-, Mail-, Logger- und Support-Servern.
---
## Enthaltene Tools
### [`checkms`](./checkms)
Analyse von Microsoft-spezifischen SMTP Fehlercodes (S3150, S775, S7771…) in den Exim-Logs.
- [Dokumentation & Beispiele](./checkms/README.md)
### [`go`](./go)
SSH-Shortcut-Tool für schnelle Verbindungen zu easyname-Servern.
- [Dokumentation & Beispiele](./go/README.md)
### [`pincMails`](./pincMails)
Sucht nach versendeten PINC Mails einer bestimmten Kundennummer und kopiert diese in einen lokalen Unterordner
- [Dokumentation & Beispiele](./pincMails/README.md)
---
Weitere Snippets für Legacy kommen hier dazu.
## Voraussetzungen
### Generelle Anforderungen
- **Kerberos-Setup**: Funktionierende Kerberos-Konfiguration
- **SSH-Zugriff**: Berechtigungen für easyname-Infrastruktur
- **LUSER Variable**: Muss in Environment gesetzt sein
### Setup-Anleitung
1. LUSER in `~/.bashrc` oder `~/.bash_env` setzen:
```bash
export LUSER="deinusername"
```
2. Kerberos-Ticket erstellen:
```bash
kinit deinusername@NESSUS.AT
# oder mit go-Tool:
go kinit
```
3. Tool in PATH hinzufügen oder Alias erstellen:
```bash
# Option 1: Alias
alias go="/pfad/zu/connect/go/go.sh"
# Option 2: Symlink
ln -s /pfad/zu/connect/go/go.sh ~/bin/go
```
---
## Lizenz / Sichtbarkeit
> Dieses Repository ist **intern** für easyname Support.
> Falls eine Freigabe nach extern geplant ist, bitte vorab mit Teamleitung abklären.
---
*Diese Tools wurden mit Hilfe von Claude Code erstellt.*
+150
View File
@@ -0,0 +1,150 @@
# go - SSH-Shortcuts für easyname Server
Bash-Skript für schnelle SSH-Verbindungen zu easyname-Servern mit Kerberos-Authentifizierung.
## Voraussetzungen
- **LUSER** Umgebungsvariable muss gesetzt sein (dein Kerberos-Username)
- Kerberos-Authentifizierung konfiguriert
- SSH-Zugriff auf easyname-Infrastruktur
## Installation
1. **LUSER Variable setzen** (in `~/.bashrc` oder `~/.bash_env`):
```bash
export LUSER="deinusername"
```
2. **Skript ausführbar machen**:
```bash
chmod +x go.sh
```
3. **Optional: In PATH hinzufügen** oder Alias erstellen:
```bash
# Alias in ~/.bashrc
alias go="/pfad/zu/go.sh"
```
## Verwendung
### Kerberos-Authentifizierung
```bash
go kinit # Authentifiziert $LUSER@NESSUS.AT
go k # Kurzform
```
### Web-Server Verbindungen
```bash
go web 42 # Verbindet zu web42.in.easyname.com
go w 42 # Kurzform
go web 42 e110604 # Verbindet und wechselt zu easyuser e110604
go w 42 e110604 # Kurzform mit easyuser
```
### Mail-Server Verbindungen
```bash
go mx 12 # Verbindet zu mx12.in.easyname.com
go m 12 # Kurzform
```
### Logger-Server
```bash
go logger # Verbindet zu logger.in.nessus.at
go l # Kurzform
```
### Support-Server
```bash
go support # Verbindet zu support.in.easyname.com
go s # Kurzform
```
## Remote-Befehle ausführen
Mit `--` können Remote-Befehle direkt ausgeführt werden:
```bash
# Hostname und Uptime auf mx12 anzeigen
go mx 12 -- bash -lc 'hostname; uptime'
# Logs auf logger durchsuchen
go logger -- grep "error" /var/log/syslog
# Here-Doc an Remote-Server senden
go logger -- bash -s <<'EOF'
echo "Mehrere Befehle"
date
hostname
EOF
```
## Technische Details
### Verbindungsverhalten
- **Mit easyuser**: Interaktive TTY-Session mit `-qtt` (für `easyuser` Wechsel)
- **Ohne easyuser**: Non-interaktive Session, ideal für Scripting
- **Remote-Commands**: Werden direkt an SSH durchgereicht
### Server-Mapping
| Kommando | Server |
|----------|--------|
| `web<NR>` | `web<NR>.in.easyname.com` |
| `mx<NR>` | `mx<NR>.in.easyname.com` |
| `logger` | `logger.in.nessus.at` |
| `support` | `support.in.easyname.com` |
### Exit-Codes
Das Skript gibt den Exit-Code des SSH-Befehls direkt weiter, was es ideal für Scripting macht.
## Beispiele für fortgeschrittene Nutzung
### Logs von mehreren Servern sammeln
```bash
for i in {1..5}; do
echo "=== Web$i ==="
go web $i -- tail -n 5 /var/log/apache2/error.log
done
```
### Parallel auf mehreren MX-Servern prüfen
```bash
for mx in 10 11 12; do
go mx $mx -- mailq | head -5 &
done
wait
```
### Mit checkms kombinieren
```bash
# Wenn go als Befehl verfügbar ist, nutzt checkms es automatisch
checkms --minutes 30
```
## Troubleshooting
### LUSER nicht gesetzt
```
Fehler: Bitte LUSER setzen!
```
**Lösung**: `export LUSER="deinusername"` in ~/.bashrc hinzufügen
### Kerberos-Ticket abgelaufen
```
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
```
**Lösung**: `go kinit` ausführen
### Server-Nummer vergessen
```
Fehler: 'go web' benötigt <NR> [EUSER].
```
**Lösung**: Server-Nummer angeben, z.B. `go web 42`
---
*Dieses Skript wurde mit Hilfe von Claude Code erstellt.*
+76
View File
@@ -0,0 +1,76 @@
#!/usr/bin/env bash
# go - SSH-Shortcuts für easyname Server
set -euo pipefail
LUSER="${LUSER:?Bitte LUSER setzen!}"
usage() {
cat <<USAGE
Usage:
go k|kinit
go w|web <NR> [EUSER] [-- <REMOTE-CMD>...]
go m|mx <NR> [-- <REMOTE-CMD>...]
go l|logger [-- <REMOTE-CMD>...]
go s|support [-- <REMOTE-CMD>...]
Beispiele:
go web 42
go web 42 e110604
go mx 12 -- bash -lc 'hostname; uptime'
go logger -- bash -s # für Here-Doc
USAGE
}
[[ $# -ge 1 ]] || { usage; exit 1; }
cmd="$1"; shift || true
case "$cmd" in
k|kinit)
exec kinit "${LUSER}@NESSUS.AT"
;;
w|web)
# go web NR [EUSER] [-- REMOTE-CMD...]
[[ $# -ge 1 ]] || { echo "Fehler: 'go web' benötigt <NR> [EUSER]." >&2; usage; exit 1; }
nr="$1"; shift || true
host="${LUSER}@web${nr}.in.easyname.com"
if [[ $# -ge 1 && "$1" != "--" ]]; then
# EUSER angegeben -> interaktiv mit TTY (für easyuser), trotzdem leiser (-q)
euser="$1"; shift || true
exec ssh -qtt "$host" "bash -lic 'easyuser \"$euser\"'"
else
# keine EUSER -> nicht-interaktiv; evtl. REMOTE-CMD nach "--" durchreichen
[[ $# -ge 1 && "$1" == "--" ]] && shift || true
exec ssh "$host" "$@"
fi
;;
m|mx)
# go mx NR [-- REMOTE-CMD...]
[[ $# -ge 1 ]] || { echo "Fehler: 'go mx' benötigt <NR>." >&2; usage; exit 1; }
nr="$1"; shift || true
host="${LUSER}@mx${nr}.in.easyname.com"
[[ $# -ge 1 && "$1" == "--" ]] && shift || true
exec ssh "$host" "$@"
;;
l|logger)
# go logger [-- REMOTE-CMD...]
host="${LUSER}@logger.in.nessus.at"
[[ $# -ge 1 && "$1" == "--" ]] && shift || true
exec ssh "$host" "$@"
;;
s|support)
# go support [-- REMOTE-CMD...]
host="${LUSER}@support.in.easyname.com"
[[ $# -ge 1 && "$1" == "--" ]] && shift || true
exec ssh "$host" "$@"
;;
*)
usage; exit 1
;;
esac
+57
View File
@@ -0,0 +1,57 @@
# mail.sh – Remote Datei-Downloader für PINC-Mails
**Wichtig:**
Bevor du das Skript verwendest, führe folgende Schritte aus:
1. **Mach das Skript ausführbar:**
```bash
chmod +x mail.sh
```
2. **(Optional, wenn LUSER nicht gesetzt ist) Passe den Benutzernamen an:**
Ersetze im Skript die Stelle
```
LUSER="${LUSER:?Bitte LUSER setzen!}"
```
durch deinen tatsächlichen Benutzernamen für den Server `appdb02.in.easyname.com`.
---
## 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.
## Nutzung
```bash
./mail.sh <Kundennummer>
```
**Beispiel:**
```bash
./mail.sh 123
```
Das Skript sucht dann nach allen Dateien, die mit `123-` beginnen, und lädt sie in ein lokales Verzeichnis `./123/` herunter.
## Voraussetzungen
- SSH-Zugriff auf den Server `appdb02.in.easyname.com`
- Der angegebene Benutzername muss gültig sein und die nötigen Berechtigungen besitzen
- `scp` und `ssh` müssen auf deinem System installiert sein
## 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.
## Fehlerbehandlung
- Falls keine passenden Dateien gefunden werden, gibt das Skript eine entsprechende Meldung aus.
- Bei Fehlern während des Downloads oder beim Erstellen des lokalen Verzeichnisses wird eine Fehlermeldung angezeigt.
---
**Hinweis:**
Das Skript ist für den Einsatz in einer Linux-Umgebung vorgesehen.
+65
View File
@@ -0,0 +1,65 @@
#!/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
fi
# Definieren Sie die Verbindungsdetails
server="appdb02.in.easyname.com"
LUSER="${LUSER:?Bitte LUSER setzen!}" # Setzen Sie hier Ihren Benutzernamen ein, wenn LUSER nicht als Umgebungsvariable gesetzt ist
# Remote-Directory überprüfen und Subdirectories auflisten, unter Verwendung von bash
remoteDirectories=$(ssh "$LUSER@$server" "bash -c 'ls -d /Apps/easyname/run/pinc*/*/'")
# Wenn keine Verzeichnisse gefunden wurden, Skript beenden
if [ -z "$remoteDirectories" ]; then
echo "Keine Subdirectories in /Apps/easyname/run/pinc/ gefunden."
exit 1
fi
localSavePath="$PWD/$1" # Setzt den lokalen Speicherpfad relativ zum aktuellen Verzeichnis
filePattern="$1-*"
# Schleife über die gefundenen Verzeichnisse und in jedem Verzeichnis nach Dateien suchen
fileList=""
for dir in $remoteDirectories; do
# Suche in jedem Verzeichnis nach Dateien mit dem angegebenen Muster
filesInDir=$(ssh "$LUSER@$server" "bash -c 'find $dir -type f -name \"$filePattern\"'")
fileList="$fileList $filesInDir"
done
# Prüfen, ob der Befehl erfolgreich ausgeführt wurde
if [ -z "$fileList" ]; then
echo "Fehler beim Ausführen des SSH-Befehls auf dem Remote-Server $server oder keine Dateien gefunden."
exit 1
fi
# Überprüfen, ob Dateien gefunden wurden
if [ -z "$fileList" ]; then
echo "Keine Dateien gefunden, die mit dem Muster $filePattern beginnen."
exit 0
fi
# Prüfen, ob das lokale Speicherverzeichnis existiert, und falls nicht, erstellen
if [ ! -d "$localSavePath" ]; then
echo "Das Verzeichnis $localSavePath existiert nicht. Erstelle es..."
mkdir -p "$localSavePath"
if [ $? -ne 0 ]; then
echo "Fehler beim Erstellen des Verzeichnisses $localSavePath."
exit 1
fi
fi
# Herunterladen der Dateien vom Remote-Server
for file in $fileList; do
scp "$LUSER@$server:$file" "$localSavePath/"
if [ $? -ne 0 ]; then
echo "Fehler beim Herunterladen der Datei $file."
else
echo "Datei $file erfolgreich heruntergeladen."
fi
done
echo "Alle Dateien wurden im Verzeichnis $localSavePath gespeichert."