From 9ae5a85e0279ae7d3534b81086b9c81c27fbe3ab Mon Sep 17 00:00:00 2001 From: h0tznpl0tz Date: Wed, 10 Sep 2025 12:24:22 +0200 Subject: [PATCH] =?UTF-8?q?Neue=20Connect-Tools=20Kategorie=20und=20umfass?= =?UTF-8?q?ende=20Dokumentation=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - go.sh SSH-Shortcut Tool mit vollständiger Dokumentation - Neue Connect-Kategorie für Verbindungstools - Umfassende .gitignore mit rekursiven Mustern - CLAUDE.md für zukünftige Claude Code Instanzen - README-Updates für bessere Navigation Die Connect-Tools vereinfachen SSH-Verbindungen zu easyname-Servern mit Kerberos-Auth und unterstützen Web-, MX-, Logger- und Support-Server. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .claude/settings.local.json | 9 +++ .gitignore | 67 ++++++++++++++++ CLAUDE.md | 97 +++++++++++++++++++++++ README.md | 20 ++++- connect/README.md | 93 ++++++++++++++++++++++ connect/go/README.md | 150 ++++++++++++++++++++++++++++++++++++ 6 files changed, 433 insertions(+), 3 deletions(-) create mode 100644 .claude/settings.local.json create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 connect/README.md create mode 100644 connect/go/README.md diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..5557eae --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(git add:*)" + ], + "deny": [], + "ask": [] + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b2edff --- /dev/null +++ b/.gitignore @@ -0,0 +1,67 @@ +# Bash-spezifische temporäre Dateien (recursive) +**/*.tmp +**/*.swp +**/*.swo +**/*~ + +# Logs (recursive) +**/*.log +**/*.log.* + +# Backup-Dateien (recursive) +**/*.bak +**/*.backup +**/*.orig + +# OS-spezifische Dateien (recursive) +**/.DS_Store +**/.DS_Store? +**/._* +**/.Spotlight-V100 +**/.Trashes +**/ehthumbs.db +**/Thumbs.db + +# Editor-spezifische Dateien (recursive) +**/.vscode/ +**/.idea/ +**/*.sublime-* + +# Konfigurationsdateien mit sensiblen Daten (recursive) +**/config/ +**/.config/ +**/*.conf +**/*.config + +# SSH Keys und Credentials (recursive) +**/id_rsa* +**/id_ed25519* +**/*.pem +**/*.key +**/*_key + +# Temporary directories (recursive) +**/tmp/ +**/temp/ +**/cache/ + +# User-spezifische Dateien +userprofiles/*/ +!userprofiles/pl/ + +# Checkms Konfigurationen (können sensible Daten enthalten) +**/checkms.conf + +# Test-Ausgaben (recursive) +**/test_output/ +**/test_results/ + +# Runtime-Dateien +**/*.pid +**/*.sock + +# Compressed files (meist temporär) +**/*.tar.gz +**/*.zip +**/*.7z +**/archive.* \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..468ed39 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,97 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Repository Overview + +Collection of **Bash scripts for easyname Support Team** - small helpers for log analysis, automations, and typical support cases. Repository is **internal** for easyname Support. + +### Architecture + +Scripts are organized by platform: +- **`legacy/`** - Scripts for Legacy infrastructure (contains `checkms`, `quicknav`) +- **`wh20/`** - Scripts for WH20 infrastructure (currently empty, placeholder for future scripts) +- **`connect/`** - Connection utilities (contains `go` SSH shortcut script) +- **`userprofiles/`** - User-specific configuration files + +Each script follows a modular structure: +``` +platform// +├── .sh # The actual script +└── README.md # Documentation and examples +``` + +## Development Commands + +### Adding New Scripts + +```bash +# 1. Create folder structure (legacy or wh20) +mkdir -p legacy/ + +# 2. Add script and make executable +chmod +x legacy//.sh + +# 3. Copy and adapt documentation template +cp README_template.md legacy//README.md + +# 4. Update platform README +# Edit legacy/README.md or wh20/README.md +``` + +### Testing Scripts + +```bash +# Test checkms (MS error code analysis) +./legacy/checkms/checkms.sh --help +./legacy/checkms/checkms.sh --show-config +./legacy/checkms/checkms.sh 2024-01-15 + +# Test go SSH shortcuts +./connect/go/go.sh web 42 +./connect/go/go.sh mx 12 +``` + +### Git Operations + +```bash +# Commit changes +git add . +git commit -m "Add to " +git push origin main +``` + +## Core Scripts + +### `checkms` - Microsoft SMTP Error Analysis +- Analyzes Microsoft-specific SMTP error codes (S3150, S775, S7771*) in Exim logs +- Config stored in `~/.config/checkms/checkms.conf` +- Can add/remove error codes dynamically +- Supports time-based filtering (--minutes, --hours) + +### `go` - SSH Connection Shortcuts +- Requires `LUSER` environment variable set +- Commands: `go web `, `go mx `, `go logger`, `go support`, `go kinit` +- Supports remote command execution with `--` separator +- Special handling for `easyuser` connections on web servers + +### `quicknav` - Legacy Navigation Function +- Simple bash function for quick SSH connections +- Must be sourced in `.bashrc`/`.zshrc` +- Requires manual configuration of `LUSER` variable + +## Environment Requirements + +- **LUSER**: Required environment variable for authentication (format: `username`) +- **SSH Access**: Must have Kerberos authentication set up (`kinit`) +- **Target Hosts**: + - `web*.in.easyname.com` + - `mx*.in.easyname.com` + - `logger.in.nessus.at` + - `support.in.easyname.com` + +## Configuration Files + +- `checkms` uses JSON config at `~/.config/checkms/checkms.conf` +- User profiles stored in `userprofiles/` directory +- `.bashrc` example available with history settings and prompt configuration \ No newline at end of file diff --git a/README.md b/README.md index 8bbfd4c..5d5a47e 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Hier sammeln wir kleine Helfer für Log-Analysen, Automatisierungen und typische ## Inhaltsverzeichnis - [Übersicht](#übersicht) +- [Connect Tools](#connect-tools) - [Legacy Snippets](#legacy-snippets) - [WH20 Snippets](#wh20-snippets) - [How-To: Neues Skript anlegen](#how-to-neues-skript-anlegen) @@ -17,13 +18,24 @@ Hier sammeln wir kleine Helfer für Log-Analysen, Automatisierungen und typische ## Übersicht -Die Skripte sind nach Plattform getrennt: +Die Skripte sind nach Kategorie getrennt: +- [**Connect**](./connect/README.md) – SSH-Verbindungstools und Shortcuts - [**Legacy**](./legacy/README.md) – Snippets für Legacy-Umgebungen - [**WH20**](./wh20/README.md) – Snippets für WH20-Umgebungen --- +## Connect Tools + +Verbindungstools für schnellen Zugriff auf easyname-Server: + +- [`go`](./connect/go) + → [Dokumentation & Beispiele](./connect/go/README.md) + SSH-Shortcuts mit Kerberos-Auth für Web-, MX-, Logger- und Support-Server + +--- + ## Legacy Snippets Aktuell enthalten: @@ -48,8 +60,9 @@ Weitere Snippets für Legacy kommen hier dazu. Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schritte: 1. **Ordnerstruktur anlegen** - Je nach Umgebung (`legacy` oder `wh20`) einen Unterordner erstellen: + Je nach Kategorie (`connect`, `legacy` oder `wh20`) einen Unterordner erstellen: ``` + connect// legacy// wh20// ``` @@ -82,7 +95,8 @@ Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schrit ``` 4. **Übersicht aktualisieren** - Das Skript in die Übersicht der passenden Plattform-README eintragen: + Das Skript in die Übersicht der passenden Kategorie-README eintragen: + - [`connect/README.md`](./connect/README.md) - [`legacy/README.md`](./legacy/README.md) - [`wh20/README.md`](./wh20/README.md) diff --git a/connect/README.md b/connect/README.md new file mode 100644 index 0000000..a0bb549 --- /dev/null +++ b/connect/README.md @@ -0,0 +1,93 @@ +# Connect Tools + +SSH-Verbindungstools und Shortcuts für den schnellen Zugriff auf easyname-Infrastruktur. + +--- + +## 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 + +### [`go`](./go) +SSH-Shortcut-Tool für schnelle Verbindungen zu easyname-Servern. + +- [Dokumentation & Beispiele](./go/README.md) + +**Features:** +- Kerberos-Authentifizierung (`go kinit`) +- Web-Server Zugriff mit optionalem easyuser-Wechsel (`go web 42 e110604`) +- Mail-Server Zugriff (`go mx 12`) +- Logger-Server Zugriff (`go logger`) +- Support-Server Zugriff (`go support`) +- Remote-Command Ausführung mit `--` Separator +- Unterstützung für Here-Documents und Piping + +**Quick Examples:** +```bash +# Kerberos-Auth +go kinit + +# Web-Server mit easyuser +go web 42 e110604 + +# Remote-Command auf MX-Server +go mx 12 -- mailq | head -5 + +# Logs auf Logger durchsuchen +go logger -- grep "error" /var/log/syslog +``` + +--- + +## 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.* \ No newline at end of file diff --git a/connect/go/README.md b/connect/go/README.md new file mode 100644 index 0000000..33b8f7c --- /dev/null +++ b/connect/go/README.md @@ -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` | `web.in.easyname.com` | +| `mx` | `mx.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 [EUSER]. +``` +**Lösung**: Server-Nummer angeben, z.B. `go web 42` + +--- + +*Dieses Skript wurde mit Hilfe von Claude Code erstellt.* \ No newline at end of file