merged connect and legacy directorys and adapted corresponding readme
This commit is contained in:
+67
-4
@@ -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.*
|
||||
@@ -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.*
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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."
|
||||
Reference in New Issue
Block a user