Compare commits

..
49 Commits
Author SHA1 Message Date
loki 105395c62d Merge pull request 'Peignerpausz patch 1' (#22) from peignerpausz-patch-1 into main
Reviewed-on: #22
Reviewed-by: Loki <alexander@dominikus.one>
2026-09-24 17:15:54 +02:00
peignerpausz e0df6c5405 Repair an inconsistancy within sslchecker. Now it works both interactively as well as directly via cli 2026-09-24 16:53:51 +02:00
peignerpausz 083f42ca51 Added sslchecker.sh to domaintools 2026-09-16 17:52:06 +02:00
loki 2fca686b56 Merge pull request 'remove uneceesary update folder' (#20) from loki/remove_update_folder into main
Reviewed-on: #20
2026-09-07 11:26:32 +02:00
loki 9a4b1ef83d remove uneceesary update folder 2026-09-07 11:25:01 +02:00
loki c950d17582 Merge pull request 'improved wpchecker while in vacation' (#19) from peignerpausz-patch-1 into main
Reviewed-on: #19
Reviewed-by: Loki <alexander@dominikus.one>
2026-09-07 11:12:04 +02:00
peignerpausz e87a48cd7a improved wpchecker while in vacation 2026-09-07 10:01:17 +02:00
loki cf1852fd0a Merge pull request 'Peignerpausz patch 1' (#18) from peignerpausz-patch-1 into main
Reviewed-on: #18
Reviewed-by: Loki <alexander@dominikus.one>
2026-08-20 16:20:53 +02:00
peignerpausz 7c192a0e05 Merge branch 'main' into peignerpausz-patch-1 2026-08-20 14:24:58 +02:00
peignerpausz 83c3b620e9 Updated Main README.md of Repo to reflect addition of new scripts. 2026-08-20 14:19:56 +02:00
peignerpausz 6444a814b0 Improved domainchecker.sh (non-interactive and interactive), various addendums to the documentation. 2026-08-20 14:10:03 +02:00
loki 56c5255442 Merge pull request 'Moved domainchecker into domaintools and improved the barren previous version. Now interactive.' (#17) from peignerpausz-patch-1 into main
Reviewed-on: #17
Reviewed-by: Loki <alexander@dominikus.one>
2026-08-18 20:33:20 +02:00
peignerpausz d248af483d Moved domainchecker into domaintools and improved the barren previous version. Now interactive. 2026-08-18 18:01:06 +02:00
loki 495713b5c2 Merge pull request 'Peignerpausz patch 1' (#16) from peignerpausz-patch-1 into main
Reviewed-on: #16
Reviewed-by: Loki <alexander@dominikus.one>
2026-08-18 13:43:57 +02:00
peignerpausz 28f6958ae3 Fixed typo XD 2026-08-18 13:01:44 +02:00
peignerpausz 8685420f24 Initial commit of histodomain.sh 2026-08-18 12:59:13 +02:00
peignerpausz fdfe0f3594 Apparently adding domainchecker.sh. 2026-05-12 16:31:14 +02:00
peignerpausz 4863322ee3 Merge pull request 'peignerpausz-patch-1' (#15) from peignerpausz-patch-1 into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/15
Reviewed-by: Loki <alexander@dominikus.one>
2026-04-22 14:22:37 +02:00
peignerpausz 99a712ffa4 Added damagereport, improved adspam and donaspam and a Serverliste for internal refrence. And memes ofc. 2026-04-17 13:25:22 +02:00
peignerpausz e9f493bc63 Improved spamcheck with eyecatching emojis and thereby improving visability for adspam and donaspam 2026-04-15 17:10:47 +02:00
peignerpausz de44af64b4 Improved spamcheck and thereby donaspam and adspam 2026-04-15 13:31:27 +02:00
Patrick Eigner-Pausz a1046bda79 Added Spamcheck, adspam and donaspam-scritps for wh20 2026-04-14 14:04:35 +02:00
peignerpausz b361f27241 Merge pull request 'go-improved' (#13) from peignerpausz-patch-1 into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/13
Reviewed-by: Loki <alexander@dominikus.one>
2026-04-14 12:18:07 +02:00
Patrick Eigner-Pausz 55529624c2 Added missing log Option go logger 2026-04-14 12:15:51 +02:00
loki 473cf80c62 Merge pull request 'Added IP address exclusion' (#14) from loki/checkms_ip_addresses into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/14
2026-04-13 13:42:12 +02:00
loki bbe2db2700 Added IP address exclusion 2026-04-13 13:41:20 +02:00
peignerpausz a6ff8e5a6f go-improved
- go-Skript um Quicknav zu wh20, adino und inname-Server ergänzt
- go-Skript um Serverliste in Info-Text erweitert
2026-04-07 11:37:12 +02:00
loki 5ae6001157 Merge pull request 'Fix permission for mail.sh' (#12) from loki/fix_permission_mail.sh into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/12
2026-03-03 14:21:30 +01:00
loki fa2bf9d50d Fix permission for mail.sh 2026-03-03 14:21:05 +01:00
loki e283a519b8 Merge pull request 'added 'log' as Logger destination' (#11) from loki/add_logger_destination into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/11
2026-03-03 14:11:19 +01:00
loki 1bc0c2eb5e added 'log' as Logger destination 2026-03-03 14:10:44 +01:00
loki 50e0126dd3 Merge pull request 'fix permission for wh20.sh' (#10) from loki/fix_permission into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/10
2026-03-03 13:58:27 +01:00
loki 60856b0312 fix permission for wh20.sh 2026-03-03 13:57:31 +01:00
loki 84e6a6eefe Merge pull request 'fixing ip addresses output' (#9) from loki/fix_ip_addresses_output into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/9
2026-03-02 10:43:47 +01:00
loki aa7cab41d7 fixing ip addresses output 2026-03-02 10:43:27 +01:00
loki c299e074b8 Merge pull request 'fixed log navigation - thanks cursor' (#8) from loki/fix_checkms into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/8
2026-03-02 09:29:35 +01:00
loki fc48de8132 fixed log navigation - thanks cursor 2026-03-02 09:28:41 +01:00
loki 93089d6eac Merge pull request 'Enhance mail.sh to prevent file name collisions during downloads' (#7) from loki_bugfix_mail.sh into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/7
2026-01-28 12:51:41 +01:00
loki 00fac9ff89 Enhance mail.sh to prevent file name collisions during downloads 2026-01-28 12:51:19 +01:00
loki 52dfa9de5f Merge pull request 'added wh20 quick ssh connect script' (#6) from loki/mailing-project-menu into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/6
2025-12-30 13:32:36 +01:00
loki 75d5680364 added wh20 quick ssh connect script 2025-12-30 13:30:51 +01:00
loki 9810a03376 Merge pull request 'loki/mailing-project-menu' (#5) from loki/mailing-project-menu into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/5
2025-12-15 14:13:02 +01:00
loki 6116e9283e updated mail.sh README 2025-12-15 14:11:48 +01:00
loki 10b000feef Refactor mail.sh to enhance user input handling and project selection
- Replaced parameter input with interactive prompts for customer number and project selection.
- Updated remote directory path based on user-selected project.
- Adjusted local save path and file pattern to use the customer number input.
2025-12-15 14:08:59 +01:00
ljp 0d56365fcf Merge pull request 'added getIps.sh script' (#4) from getIps into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/4
2025-09-15 12:32:01 +02:00
loki b657d768ee added getIps.sh script 2025-09-15 12:04:43 +02:00
ljp c39398637b Merge pull request 'added reinis mysql_backup script, renamed it to mysqltool.sh, added README.md for mysqltool.sh' (#3) from peignerpausz/eign01 into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/3
2025-09-11 23:32:17 +02:00
ljp 1befa79366 Merge pull request 'feature/deploy-system' (#2) from feature/deploy-system into main
Reviewed-on: https://vps.dominikus.one:3443/ljp/esn-support-bash-snippets/pulls/2
2025-09-11 17:56:20 +02:00
Patrick Eigner-Pausz 55efaf776d added reinis mysql_backup script, renamed it to mysqltool.sh, added README.md for mysqltool.sh 2025-09-11 16:03:02 +02:00
31 changed files with 1964 additions and 36 deletions
+35 -3
View File
@@ -8,6 +8,7 @@ Hier sammeln wir kleine Helfer für Log-Analysen, Automatisierungen und typische
- [Quick Start](#quick-start) - [Quick Start](#quick-start)
- [Übersicht](#übersicht) - [Übersicht](#übersicht)
- [Bash-Profile](#bash-profile) - [Bash-Profile](#bash-profile)
- [Domaintools](#domaintools)
- [Legacy Snippets](#legacy-snippets) - [Legacy Snippets](#legacy-snippets)
- [WH20 Snippets](#wh20-snippets) - [WH20 Snippets](#wh20-snippets)
- [Installation](#installation) - [Installation](#installation)
@@ -22,6 +23,7 @@ Hier sammeln wir kleine Helfer für Log-Analysen, Automatisierungen und typische
Die Skripte sind nach Kategorie getrennt: Die Skripte sind nach Kategorie getrennt:
- [**Bashprofiles**](./bashprofiles/README.md) – Optimierte Bash-Konfigurationen - [**Bashprofiles**](./bashprofiles/README.md) – Optimierte Bash-Konfigurationen
- [**Domaintools**](./domaintools/README.md) - Tools für Domainabfragen
- [**Legacy**](./legacy/README.md) – Snippets für Legacy-Umgebungen (inkl. Connect Tools) - [**Legacy**](./legacy/README.md) – Snippets für Legacy-Umgebungen (inkl. Connect Tools)
- [**WH20**](./wh20/README.md) – Snippets für WH20-Umgebungen - [**WH20**](./wh20/README.md) – Snippets für WH20-Umgebungen
@@ -33,6 +35,17 @@ Optimierte Bash-Konfigurationen für verschiedene Support-Umgebungen:
- [`pl`](./bashprofiles/pl) - [`pl`](./bashprofiles/pl)
→ [Dokumentation & Beispiele](./bashprofiles/README.md) → [Dokumentation & Beispiele](./bashprofiles/README.md)
Basis-Profil mit erweiterter History, farbigem Prompt und modularer Struktur Basis-Profil mit erweiterter History, farbigem Prompt und modularer Struktur
- [`eign01`](./bashprofiles/eign01/)
Sicherungskopie der aktuellen `.bashrc` von `eign01`.
## Domaintools
- [`domainchecker`](./domaintools/domainchecker/README.md)
Tool zur `dig`-Massenabfrage von Domains und DNS-Records.
- [`histodomain`](./domaintools/histodomain/README.md)
Abfrage zu historischen DNS-Einträgen über die [Securitytrails-API](https://securitytrails.com).
- [`sslchecker`](./domaintools/sslchecker/README.md)
Tool zur schnellen SSL-Prüfung mehrerer Domains gleichzeitig.
## Legacy Snippets ## Legacy Snippets
@@ -52,7 +65,16 @@ Optimierte Bash-Konfigurationen für verschiedene Support-Umgebungen:
- [`plesk`](./wh20/plesk) - [`plesk`](./wh20/plesk)
Dieses Skript stellt eine SSH-Verbindung zu einem angegebenen Webserver her und generiert so einen einmaligen Login-Link für das Plesk Admin Panel des gewünschten Servers. Dieses Skript stellt eine SSH-Verbindung zu einem angegebenen Webserver her und generiert so einen einmaligen Login-Link für das Plesk Admin Panel des gewünschten Servers.
- [`wh20`](./wh20/wh20)
Dieses Skript verbindet zum angegbenen Webserver via SSH
- [`damagecontrol`](./wh20/damagereport)
Dieses Skript ermöglicht die kombinierte Abfrage zu geläufigen Problemen mit MS365-Empfängern über [`checkms`](./legacy/checkms), [`adspam`](./wh20/adspam), [`donaspam`](wh20/donaspam) sowie [`spamcheck` selbst](.wh20/spamcheck).
- [`adspam`](./adspam)
Dieses Skript ermöglicht die Prüfung auf geläufige MS365- und Spamhaus-Fehlermeldungen auf Adino-Servern direkt von der Connect aus.
- [`donaspam`](./donaspam)
Dieses Skript ermöglicht die Prüfung auf geläufige MS365- und Spamhaus-Fehlermeldungen auf inname-Servern direkt von der Connect aus.
- [`spamcheck`](./spamcheck)
Dieses Skript ermöglicht die Prüfung auf geläufige MS365- und Spamhaus-Fehlermeldungen auf einem Plesk-Server.
--- ---
## Quick Start ## Quick Start
@@ -129,9 +151,10 @@ cd /pfad/zu/esn-support-tools
Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schritte: Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schritte:
1. **Ordnerstruktur anlegen** 1. **Ordnerstruktur anlegen**
Je nach Kategorie (`bashprofiles`, `legacy` oder `wh20`) einen Unterordner erstellen: Je nach Kategorie (`bashprofiles`, `domaintools`, `legacy` oder `wh20`) einen Unterordner erstellen:
``` ```
bashprofiles/<username>/ bashprofiles/<username>/
domaintools/<scriptname>/
legacy/<scriptname>/ legacy/<scriptname>/
wh20/<scriptname>/ wh20/<scriptname>/
``` ```
@@ -139,6 +162,10 @@ Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schrit
2. **Skript hinzufügen** 2. **Skript hinzufügen**
Das eigentliche Skript im neuen Ordner ablegen: Das eigentliche Skript im neuen Ordner ablegen:
``` ```
domaintools/<scriptname>/<scriptname>
```
oder
```
legacy/<scriptname>/<scriptname> legacy/<scriptname>/<scriptname>
``` ```
oder oder
@@ -156,16 +183,21 @@ Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schrit
[README_template_script.md](./README_template.md) [README_template_script.md](./README_template.md)
→ kopieren, anpassen und ins Skript-Verzeichnis legen: → kopieren, anpassen und ins Skript-Verzeichnis legen:
``` ```
legacy/<scriptname>/README.md domaintools/<scriptname>/README.md
``` ```
oder oder
``` ```
legacy/<scriptname>/README.md
```
oder
```
wh20/<scriptname>/README.md wh20/<scriptname>/README.md
``` ```
4. **Übersicht aktualisieren** 4. **Übersicht aktualisieren**
Das Skript in die Übersicht der passenden Kategorie-README eintragen: Das Skript in die Übersicht der passenden Kategorie-README eintragen:
- [`bashprofiles/README.md`](./bashprofiles/README.md) - [`bashprofiles/README.md`](./bashprofiles/README.md)
- [`domaintools/README.md`](./domaintools/README.md)
- [`legacy/README.md`](./legacy/README.md) - [`legacy/README.md`](./legacy/README.md)
- [`wh20/README.md`](./wh20/README.md) - [`wh20/README.md`](./wh20/README.md)
+73
View File
@@ -0,0 +1,73 @@
# Domain Tools
Sammlung von Bash-Skripten für diversen Abfragen zu Domains. Enthält Tools zur Massenabfrage von DNS-Einträgen sowie zur Anzeige historischer DNS-Einträge.
---
### Inhaltsverzeichnis
- [Übersicht](#Übersicht)
- [Enthaltene Tools](#enthaltene-Tools)
- [Voraussetzungen](#Voraussetzungen)
- [Lizenz/Sichtbarkeit](#lizenz--sichtbarkeit)
---
## Übersicht
******
---
## enthaltene Tools
### [`domainchecker`](./domainchecker/)
Tool zur dig-Massenabfrage von Domains und DNS-Records.
- [Dokumentation & Beispiele](./domainchecker/README.md)
### [`histodomain`](./histodomain/)
Abfrage zu historischen DNS-Einträgen über die Securitytrails-API.
- [Dokumentation & Beispiele](./histodomain/README.md)
### [`sslchecker`](./sslchecker/)
Tool zur schnellen SSL-Prüfung mehrerer Domains gleichzeitig.
---
## Voraussetzungen
### generelle Voraussetzungen
- kann auch von außerhalb der Connect genutzt werden, sofern eine lokale `bash` verwendbar ist
- **Kerberos-Setup**: Funktionierende Kerberos-Konfiguration
- **SSH-Zugriff**: Berechtigungen für easyname-Infrastruktur
### Setup-Anleitung
1. Kerberos-Ticket erstellen:
```bash
kinit deinusername@NESSUS.AT
# oder mit go-Tool:
go kinit
```
2. Tool in PATH hinzufügen oder Alias erstellen:
```bash
# Option 1: Alias
alias domainchecker="/pfad/zu/domaintools/domainchecker/domainchecker.sh"
# Option 2: Symlink
ln -s /pfad/zu/domaintools/domainchecker/domainchecker.sh ~/bin/domainchecker
```
---
## 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 Microsoft Copilot erstellt.*
+96
View File
@@ -0,0 +1,96 @@
# domainchecker
Domainchecker für schnelle Prüfung eines beliebigen DNS-Records für eine beliebige Anzahl an Domains
---
## Features
- Ausgabe einer Liste von DNS-Records für eine beliebige in einem Array übergebene Anzahl Domains
---
## Installation
1. Repository klonen oder Skript kopieren:
```bash
git clone git.in.loki-net.at/esn-support-bash-snippets.git
cd esn-support-bash-snippets/domaintools/domainchecker
chmod +x domainchecker.sh
```
2. Abhängigkeiten (falls vorhanden) installieren:
- dnsutils (dig), also vorinstalliert auf connect-lej.
---
## Nutzung
### Standardaufruf
```bash
./domainchecker.sh
```
### Beispiele
```bash
bash domainchecker.sh
> Welche Domains sollen gesucht werden?
> domain1.tld domain2.tld domain3.tld domain4.tld
> Welcher Record soll untersucht werden?
> A
domain1.tld A-Records:
⤷
====
domain2.tld A-Records:
⤷91.151.18.26
====
domain3.tld A-Records:
⤷91.151.18.26
====
domain4.tld A-Records:
⤷91.151.18.28
====
```
---
## Optionen
```
Usage: ./<scriptname> [OPTIONS]
--help Zeigt diese Hilfe
--option Beispieloption
YYYY-MM-DD Beispiel für Datumsargument
```
---
## Beispielausgabe
```
Hier ein Beispieloutput des Skripts.
```
```
---
## Setup-Hinweise
Falls notwendig, Alias in `~/.bashrc` setzen:
```bash
alias <scriptname>='~/pfad/zum/repo/<legacy|wh20>/<scriptname>/<scriptname>'
```
Logger-spezifisch ggf. in `~/.profile` ergänzen:
```bash
cd /var/log/easyname/$(date +%Y)/$(date +%m)/
```
---
## Notes
- Weitere Hinweise, Einschränkungen, Besonderheiten
- Ggf. bekannte Bugs oder ToDos
@@ -0,0 +1,70 @@
#! /usr/bin/env bash
# Domainchecker für schnelle Prüfung der MX-Records
# Maintainer: peignerpausz
# Version: 1.2
set -eo pipefail
declare -a DOMAINS=()
declare -a RECORDS=()
usage() {
cat <<USAGE
Verwendung:
$0 [OPTIONEN]
Oder interaktiv: $0
Optionen:
-d, --domains DOMAIN [DOMAINS...]
Zu prüfende Domains
-r, --records RECORD [RECORDS...]
Zu prüfende DNS-Records, z.B. A MX TXT
-h, --help
Diese Hilfe anzeigen
Beispiele:
$0 -d domain1.tld domain2.tld -r MX TXT
$0 --domains domain1.tld domain2.tld --records MX TXT
USAGE
}
while [[ $# -gt 0 ]]; do
case "$1" in
-d | --domains)
shift
while [[ $# -gt 0 && "$1" != -* ]]; do
DOMAINS+=("$1")
shift
done
;;
-r | --records)
shift
while [[ $# -gt 0 && "$1" != -* ]]; do
RECORDS+=("$1")
shift
done
;;
-h | --help)
usage
exit 0
;;
esac
done
[[ ${#DOMAINS[@]} -eq 0 ]] && read -ra DOMAINS -p "Welche Domains sollen gesucht werden? " DOMAINS
[[ ${#RECORDS[@]} -eq 0 ]] && read -ra RECORDS -p "Welcher Records sollen gesucht werden? "
for domain in "${DOMAINS[@]}"; do
printf "\n==== %s ====\n" "$domain"
for record in "${RECORDS[@]}"; do
printf "++++ %s ++++\n" "$record"
result=$(dig +short "$record" "$domain")
if [[ -n "$result" ]]; then
printf "%s" "$result"
else
printf "Keine Einträge gefunden."
fi
echo
done
done
+80
View File
@@ -0,0 +1,80 @@
# histodomain - historische DNS-Abfragen
Skript zur schnellen Abfrage historischer Domain-Records im json-Format. Zur Abfrage wird ein API-Key von Securitytrails.com benötigt.
---
## Features
- Abfrage historischer DNS-Records inklusive TTLs und Prioritäten
---
## Installation
1. Repository klonen oder Skript kopieren:
```bash
git clone git.int.loki-net.at/esn-support-bash-snippets.git
cd esn-support-bash-snippets/domaintools/histodomain
chmod +x histodomain
```
---
## Nutzung
### Standardaufruf
```bash
./histodomain.sh
```
### Beispiele
```bash
./<scriptname> --option foo
./<scriptname> 2025-09-08
```
---
## Optionen
```
Usage: ./<scriptname> [OPTIONS]
--help Zeigt diese Hilfe
--option Beispieloption
YYYY-MM-DD Beispiel für Datumsargument
```
---
## Beispielausgabe
Hier ein Beispieloutput des Skripts.
``` bash
histodomain
> Welche Domain?
> domain.tld
> Welcher DNS-Typ?
> a
> API-Key für Securitytrails angeben:
```
---
## Setup-Hinweise
Falls notwendig, Alias in `~/.bashrc` setzen:
```bash
alias <scriptname>='~/pfad/zum/repo/domaintools/histodomain/histodomain.sh'
```
---
## Notes
- Free-Version von Securitytrails ermöglicht bis zu 50 kostenlose Abpfragen über die API/Monat
- To-Do
- Non-interaktive Version bauen
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env bash
# Domaintool zum Abfragen von historischen DNS-Einträgen über die Securitytrails-API
# Maintainer: peignerpausz
# Version: 1
set -eou pipefail
usage() {
cat <<USAGE
Verwendung:
histodomain
> Welche Domain? Domain ohne http oder https!
> domain.tld
> Welcher DNS-Typ? Eintrag in lower case!
> a/aaaa/txt/ns/soa/...
USAGE
}
echo "Welche Domain? Achtung: Domain ohne http oder https! "
read domain
if [[ -z "$domain" ]]; then
{
echo -e "Fehler: keine Domain angegeben. \n" >&2
usage
exit 1
}
fi
echo "Welcher DNS-Typ? Achtung: Eintrag in lower case! "
read dnstype
if [[ -z "$dnstype" ]]; then
{
echo -e "Fehler: keinen DNS-Typ angegeben. \n" >&2
usage
exit 1
}
fi
# Prüfung ob Securitytrails-API-Key übergeben wurde oder als Umgebungsvariable existiert.
if [[ -z "$SECURITYTRAILSAPI" ]]; then
read -rsp "API-Key für Securitytrails angeben: " SECURITYTRAILSAPI
echo
fi
# Hier folgt die eigentliche Abfrage über die Securitytrails-API.
curl --request GET --url \
https://api.securitytrails.com/v1/history/$domain/dns/$dnstype \
--include --header "APIKEY: $SECURITYTRAILSAPI" --header 'Accept: application/json'
+101
View File
@@ -0,0 +1,101 @@
# SSLChecker
Skript zum schnellen Prüfen der Gültigkeit und des Typs von SSL-Certs
---
## Features
- Prüft Gültigkeit
- Prüft Typ (LE oder was anderes)
- Prüft Restgültigkeit des SSL-Certs
---
## Installation
1. Repository klonen oder Skript kopieren:
```bash
git clone git.in.loki-net.at/esn-support-bash-snippets.git
cd esn-support-bash-snippets/domaintools/sslchecker
chmod +x sslchecker.sh
```
2. Abhängigkeiten (falls vorhanden) installieren:
- `curl`
- `openssl`
- beide auf der connect vorinstalliert
---
## Nutzung
### Standardaufruf
```bash
./sslchecker.sh
```
### Beispiele
```bash
./sslchecker.sh -d domain1.tld domain2.tld domain3.tld -t le
```
---
## Optionen
```
Verwendung:
bash sslchecker.sh [OPTIONEN]
Oder interaktiv: bash sslchecker.sh
Optionen:
-d, --domains DOMAIN [DOMAINS...]
Zu prüfende Domains
-t, --type Typ
Prüft gegen erwarteten Issuer, etwa Let's Encrypt, Sectigo oder GlobalSign
-h, --help
Diese Hilfe anzeigen
```
---
## Beispielausgabe
```
bash sslchecker.sh -d ironsites.at myrealis.at orf.at -t le
+++SSLCHECKER v0.1+++
====== ironsites.at =========
OK valid SSL
OK SSL-Zertifikat gültig bis Nov 1 23:23:54 2026 GMT (46 Tage verbleibend)
OK Cert ist von Let's Encrypt
====== myrealis.at =========
OK valid SSL
OK SSL-Zertifikat gültig bis Nov 5 07:16:41 2026 GMT (49 Tage verbleibend)
OK Cert ist von Let's Encrypt
====== orf.at =========
OK valid SSL
OK SSL-Zertifikat gültig bis Jan 3 08:17:00 2027 GMT (108 Tage verbleibend)
X Cert ist nicht von Let's Encrypt (gefunden: GlobalSign nv-sa)
```
---
## Setup-Hinweise
Falls notwendig, Alias in `~/.bashrc` setzen:
```bash
alias sslchecker='~/esn-support-tools/domaintools/sslchecker/sslchecker.sh'
```
---
## Notes
- To-Do:
Timeouts abfangen
eventuell Umbau auf `openssl` statt `curl`
Optionen ausbauen
+119
View File
@@ -0,0 +1,119 @@
#!/usr/bin/env bash
# Tool zum Prüfen von SSL-Gültigkeit mehrer Domains
# Maintainer: peignerpausz
set -o pipefail
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
RESET="\033[0m"
declare -a DOMAINS
usage() {
cat <<USAGE
Verwendung:
bash $0 [OPTIONEN]
Oder interaktiv: bash $0
Optionen:
-d, --domains DOMAIN [DOMAINS...]
Zu prüfende Domains
-t, --type
Prüft gegen erwarteten Issuer, etwa Let's Encrypt, Sectigo oder GlobalSign
-h, --help
Diese Hilfe anzeigen
Beispiele:
$0 -d domain1.tld domain2.tld -t le
$0 --domains domain1.tld domain2.tld --type le
USAGE
}
while [[ $# -gt 0 ]]; do
case "$1" in
-d | --domains)
shift
while [[ $# -gt 0 && "$1" != -* ]]; do
DOMAINS+=("$1")
shift
done
;;
-t | --type)
ISSUER="$2"
case "$ISSUER" in
le)
EXPECTED_ISSUER="Let's Encrypt"
;;
digicert)
EXPECTED_ISSUER="DigiCert"
;;
sectigo)
EXPECTED_ISSUER="Sectigo"
;;
global)
EXPECTED_ISSUER="GlobalSign"
;;
*)
echo "Fehler: Ungültiger Typ '$ISSUER'"
echo "Erlaubte Werte: le, digicert, sectigo, global"
exit 1
;;
esac
shift 2
;;
-h | --help)
usage
exit 0
;;
*)
echo "Unbekannte Option: $1"
usage
exit 1
;;
esac
done
printf "+++SSLCHECKER v0.1+++\n"
[[ ${#DOMAINS[@]} -eq 0 ]] && read -ra DOMAINS -p "Welche Domains sollen gesucht werden? " DOMAINS
for domain in "${DOMAINS[@]}"; do
printf "\n========= %s =========\n" "$domain"
VALIDITY=$(curl -vI https://$domain 2>&1 | grep -F "SSL certificate verify ok")
EXPIRE=$(echo | openssl s_client -connect $domain:443 -servername $domain 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
ISSUER=$(echo | openssl s_client -connect "$domain:443" -servername "$domain" 2>/dev/null |
openssl x509 -noout -issuer |
grep -o 'O *= *[^,]*' |
sed 's/O *= *//')
expire_ts=$(date -d "$EXPIRE" +%s)
now_ts=$(date +%s)
days_left=$(((expire_ts - now_ts) / 86400))
if [[ -n "$VALIDITY" ]]; then
printf "${GREEN}OK${RESET} valid SSL\n"
else
printf "${RED}X${RESET} not valid SSL\n"
fi
if [ "$days_left" -lt 0 ]; then
printf "${RED}CRITICAL${RESET} Zertifikat ist seit %d Tagen abgelaufen (%s)\n" "$((-days_left))" "$EXPIRE"
elif [ "$days_left" -lt 7 ]; then
printf "${RED}CRITICAL${RESET} Zertifikat läuft in %d Tagen ab (%s)\n" "$days_left" "$EXPIRE"
elif [ "$days_left" -lt 30 ]; then
printf "${YELLOW}WARNING${RESET} SSL-Zertifikat läuft in $days_left Tagen ab ($EXPIRE)\n"
else
printf "${GREEN}OK${RESET} SSL-Zertifikat gültig bis $EXPIRE ($days_left Tage verbleibend)\n"
fi
if [[ -n $EXPECTED_ISSUER ]]; then
if [[ "$ISSUER" == *"$EXPECTED_ISSUER"* ]]; then
printf "${GREEN}OK${RESET} Cert ist von %s" "$EXPECTED_ISSUER"
else
printf "${YELLOW}X${RESET} Cert ist nicht von %s (gefunden: %s)" "$EXPECTED_ISSUER" "$ISSUER"
fi
else
printf "${GREEN}INFO${RESET} Cert-Aussteller: %s" "$ISSUER"
fi
printf "\n"
done
+14 -5
View File
@@ -190,6 +190,8 @@ else
fi fi
[[ -n "${CODES_REGEX// }" ]] || CODES_REGEX="S3150|S775|S7771[0-9]*" [[ -n "${CODES_REGEX// }" ]] || CODES_REGEX="S3150|S775|S7771[0-9]*"
year="${DATE:0:4}"
month="${DATE:5:2}"
LOGFILE="${DATE}.log" LOGFILE="${DATE}.log"
# --- Remote-Kommando --- # --- Remote-Kommando ---
@@ -202,7 +204,7 @@ fi
# --- Analyse (remote) --- # --- Analyse (remote) ---
$REMOTE bash -s <<EOF $REMOTE bash -s <<EOF
set -euo pipefail set -euo pipefail
cd /var/log/easyname/\$(date +%Y/%m) cd /var/log/easyname/$year/$month
if [ -f "$LOGFILE" ]; then SRC="cat \"$LOGFILE\"" if [ -f "$LOGFILE" ]; then SRC="cat \"$LOGFILE\""
elif [ -f "$LOGFILE.gz" ]; then SRC="zcat \"$LOGFILE.gz\"" elif [ -f "$LOGFILE.gz" ]; then SRC="zcat \"$LOGFILE.gz\""
@@ -211,6 +213,7 @@ $REMOTE bash -s <<EOF
exit 1 exit 1
fi fi
echo "⚠️ Starte checkms für $DATE"
echo "Analysiere $LOGFILE" echo "Analysiere $LOGFILE"
echo echo
printf "%-8s %-16s %-8s\n" "COUNT" "IP" "CODE" printf "%-8s %-16s %-8s\n" "COUNT" "IP" "CODE"
@@ -234,11 +237,17 @@ $REMOTE bash -s <<EOF
{ {
code="NA"; ip="NA"; code="NA"; ip="NA";
for (i=1;i<=NF;i++) { for (i=1;i<=NF;i++) {
if (\$i ~ /\(S[0-9]+\)/) { t=\$i; gsub(/[()]/,"",t); code=t } if (\$i ~ /\(S[0-9]+\)/) { t=\$i; gsub(/[()]/,"",t); sub(/\\.$/,"",t); code=t }
else if (\$i ~ /^S[0-9]+/) { code=\$i } else if (\$i ~ /^S[0-9]+/) { code=\$i; sub(/\\.$/,"",code) }
if (\$i ~ /^\[[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\]$/) { if (\$i ~ /^\[[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {
ip=\$i; gsub(/[\[\]]/,"",ip) ip=\$i; gsub(/^\[|\].*$/,"",ip)
} }
else if (ip == "NA" && \$i ~ /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/) {
ip=\$i
}
}
if (ip ~ /^77\.244\.243\.(9|10|11|12)$/) {
next
} }
print code, ip print code, ip
} }
+76
View File
@@ -0,0 +1,76 @@
# getIps.sh
A bash script that resolves hostnames to their IPv4 and IPv6 addresses using DNS lookups.
## Description
This script reads a list of hostnames from an input file and performs DNS lookups to find their corresponding IPv4 and IPv6 addresses. The results are written to an output file in a tab-separated format.
## Usage
```bash
./getIps.sh <input_file> <output_file>
```
### Arguments
- `input_file`: Path to a text file containing hostnames (one per line)
- `output_file`: Path where the results will be written
### Example
```bash
./getIps.sh hosts.txt results.txt
```
## Input Format
The input file should contain hostnames, one per line:
```
google.com
github.com
stackoverflow.com
```
## Output Format
The output file will contain tab-separated values with the following columns:
```
hostname IPv4_address IPv6_address
```
Example output:
```
google.com 142.250.191.14 2a00:1450:4001:80e::200e
github.com 140.82.112.4 N/A
stackoverflow.com 151.101.1.69 N/A
```
## Features
- Resolves both IPv4 (A records) and IPv6 (AAAA records) addresses
- Handles empty lines in input file gracefully
- Shows "N/A" for addresses that cannot be resolved
- Clears previous output file before writing new results
- Provides usage information if incorrect arguments are provided
## Requirements
- `dig` command (part of dnsutils package)
- Bash shell
## Installation
Make the script executable:
```bash
chmod +x getIps.sh
```
## Error Handling
- The script will exit with an error if the wrong number of arguments is provided
- Empty lines in the input file are automatically skipped
- DNS resolution failures are handled gracefully (shows "N/A")
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
# Check if required arguments are provided
if [ $# -ne 2 ]; then
echo "Usage: $0 <input_file> <output_file>"
echo "Example: $0 hosts.txt output.txt"
exit 1
fi
# Input and output files from command line arguments
INPUT_FILE="$1"
OUTPUT_FILE="$2"
# Clear previous output
> "$OUTPUT_FILE"
# Process each hostname
while read -r host; do
# Skip empty lines
[[ -z "$host" ]] && continue
ipv4=$(dig +short A "$host" | head -n 1)
ipv6=$(dig +short AAAA "$host" | head -n 1)
echo -e "$host\t${ipv4:-N/A}\t${ipv6:-N/A}" >> "$OUTPUT_FILE"
done < "$INPUT_FILE"
echo "Done. Results written to $OUTPUT_FILE"
+37 -5
View File
@@ -1,24 +1,31 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# go - SSH-Shortcuts für easyname Server # go improved - SSH-Shortcuts für easyname, WH20, adino und inname Server
# Maintainer: ljp # Maintainer: ljp
set -euo pipefail set -euo pipefail
LUSER="${LUSER:?Bitte LUSER setzen!}" LUSER="${LUSER:?Bitte LUSER setzen!}"
WHUSER="${WHUSER:?Bitte WHUSER setzen!}"
usage() { usage() {
cat <<USAGE cat <<USAGE
Usage: Usage:
go k|kinit go k|kinit
go w|web <NR> [EUSER] [-- <REMOTE-CMD>...] go w|web <NR> [EUSER] [-- <REMOTE-CMD>...]
go m|mx <NR> [-- <REMOTE-CMD>...] go m|mx <NR> [-- <REMOTE-CMD>...]
go l|logger [-- <REMOTE-CMD>...] go l|log|logger [-- <REMOTE-CMD>...]
go s|support [-- <REMOTE-CMD>...] go s|support [-- <REMOTE-CMD>...]
go a|adino
go i|inname
go o|wh20
Beispiele: Beispiele:
go web 42 go web 42
go web 42 e110604 go web 42 e110604
go mx 12 -- bash -lc 'hostname; uptime' go mx 12 -- bash -lc 'hostname; uptime'
go logger -- bash -s # für Here-Doc go logger -- bash -s # für Here-Doc
Serverliste:
Legacy-Server 01..26, 107, 114, 119, 501..532
WH20-Server 1..25
Adino-Server 212 237 244 251 252 268 272 279 280 285 307 327 353 358 395
inname-Server 20..30
USAGE USAGE
} }
@@ -57,7 +64,7 @@ case "$cmd" in
exec ssh "$host" "$@" exec ssh "$host" "$@"
;; ;;
l|logger) l|log|logger)
# go logger [-- REMOTE-CMD...] # go logger [-- REMOTE-CMD...]
host="${LUSER}@logger.in.nessus.at" host="${LUSER}@logger.in.nessus.at"
[[ $# -ge 1 && "$1" == "--" ]] && shift || true [[ $# -ge 1 && "$1" == "--" ]] && shift || true
@@ -71,6 +78,31 @@ case "$cmd" in
exec ssh "$host" "$@" exec ssh "$host" "$@"
;; ;;
o|wh20)
# go wh20 web NR
[[ $# -ge 1 ]] || { echo "Fehler: 'go wh20' benötigt <NR>." >&2; usage; exit 1; }
nr="$1"; shift || true
host="${WHUSER}@web${nr}.wh20.easyname.systems"
exec ssh "$host" "$@"
;;
a|adino)
# go adino srv NR
[[ $# -ge 1 ]] || { echo "Fehler: 'go adino' benötigt <NR>." >&2; usage; exit 1; }
nr="$1"; shift || true
host="${WHUSER}@srv${nr}.adino.at"
exec ssh "$host" "$@"
;;
i|inname)
# go adino srv NR
[[ $# -ge 1 ]] || { echo "Fehler: 'go inname' benötigt <NR>." >&2; usage; exit 1; }
nr="$1"; shift || true
host="${WHUSER}@ws${nr}.inname.net"
exec ssh "$host" "$@"
;;
*) *)
usage; exit 1 usage; exit 1
;; ;;
+89
View File
@@ -0,0 +1,89 @@
# MYSQL Tool
Bashskript, das schnellere Datenbank-Downloads, Restore und sogar Backup-Restors vom BackupFTP ermöglicht.
---
## Features
- Datenbanken prüfen
- Datenbanken dumpen
- Datenbanken droppen
- Datenbanken aus SQL-File restoren
- Backups vom Backup-FTP direkt in das aktuelle Verzeichnis herunterladen
- Datenbanken aus einzelnen Tables und Schmemes mergen
---
## Installation
1. Als easyuser einloggen
2. Skript herunterladen
```bash
git clone <gitea-url>/esn-support-bash-snippets.git
cd esn-support-bash-snippets/<legacy|wh20>/<scriptname>
chmod +x <scriptname>
```
3. Skript ausführen
```bash
./mysqltool.sh
```
4. Skript nach erfolgreicher Bearbeitung im Kundencontainer entfernen
---
## Nutzung
### Standardaufruf
```bash
./mysqltool.sh
```
### Beispiele
```bash
./mysqltool.sh
./<scriptname> --option foo
./<scriptname> 2025-09-08
```
---
## Optionen
```
Usage: ./<scriptname> [OPTIONS]
--help Zeigt diese Hilfe
--option Beispieloption
YYYY-MM-DD Beispiel für Datumsargument
```
---
## Beispielausgabe
```
Hier ein Beispieloutput des Skripts.
```
---
## Setup-Hinweise
Falls notwendig, Alias in `~/.bashrc` setzen:
```bash
alias <scriptname>='~/pfad/zum/repo/<legacy|wh20>/<scriptname>/<scriptname>'
```
Logger-spezifisch ggf. in `~/.profile` ergänzen:
```bash
cd /var/log/easyname/$(date +%Y)/$(date +%m)/
```
---
## Notes
- Derzeit muss das Skript als eUser ausgeführt werden
- To-Do: Skript anpassen, sodass es ohne eUser ausgeführt werden kann
+225
View File
@@ -0,0 +1,225 @@
function mysql_tool ()
{
while :
do
PS3='Please enter your choice: '
echo "Press (1) fuer Datenbank Pruefung."
echo "Press (2) fuer Datenbank Dump."
echo "Press (3) fuer Datenbank Drop."
echo "Press (4) fuer Datenbank Restore."
echo "Press (5) fuer Backup download."
echo "Press (6) fuer Datenbank zusammen mergen."
echo "Press (q) fuer QUIT."
read -n1 wahl
echo ""
if [ "$wahl" == "q" ]
then
break
fi
case $wahl in
"1")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$db_name" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
echo "Starte die Pruefung der Datenbank $db_name."
mysqlcheck --defaults-extra-file="$HOME/tmp/.my.cnf" -c --all-databases
rm $HOME/tmp/.my.cnf
;;
"2")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$(echo "$db_name"|awk -F/ '{print $NF}'|awk -F_ '{print $1}')" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
echo "Zielverzeichnis eingeben:"
echo "Default = html"
read target_folder
if [ ! -n "target_folder" ]
then
target_folder=html
fi
echo "Starte einen Datenbank Dump fuer Datenbank $db_name nach $target_folder."
mysqldump --defaults-extra-file=$HOME/tmp/.my.cnf $db_name | gzip > "$HOME/$target_folder/$db_name$(date +_%M-%H-%d-%m-%Y).sql.gz"
rm $HOME/tmp/.my.cnf
;;
"3")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$db_name" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
echo "Starte drop fuer Datenbank $db_name."
mysql --defaults-extra-file="$HOME/tmp/.my.cnf" -e "SHOW TABLES FROM $db_name"|grep -v "Tables_in_$db_name"|while read a
do
mysql --defaults-extra-file="$HOME/tmp/.my.cnf" -e "DROP TABLE $db_name"."$a"
done
rm $HOME/tmp/.my.cnf
;;
"4")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$(echo "$db_name"|awk -F/ '{print $NF}'|awk -F_ '{print $1}'|awk -F. '{print $1}')" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
ndb_name=$(echo $db_name|awk -F/ '{print $NF}'|awk -F_ '{print $1}'|awk -F. '{print $1}')
echo "Starte Restore fuer Datenbank $ndb_name."
datend=$(echo $HOME/$db_name|awk -F. '{print $NF}')
if [ "$datend" == "gz" ]
then
zcat $HOME/$db_name|mysql --defaults-extra-file="$HOME/tmp/.my.cnf" $ndb_name
else
cat $HOME/$db_name|mysql --defaults-extra-file="$HOME/tmp/.my.cnf" $ndb_name
fi
rm $HOME/tmp/.my.cnf
;;
"5")
echo -n "Backupserver eingeben:"
read backup_serv
echo -n "Benutzername eingeben:"
read ftp_uname
read -s -p "FTP Passwort:" FTP_PWD
echo "machine $backup_serv" > $HOME/.netrc
echo "login $ftp_uname" >> $HOME/.netrc
echo "password $FTP_PWD" >> $HOME/.netrc
echo ""
wget_verz=""
while :
do
exec wget -O - ftp://"$backup_serv":21/"$wget_verz" 2>/dev/null|grep '^ '|sed 's/<a href="ftp:\/\/'$backup_serv':21//g'|awk -F\" '{print $1}'
echo "(Verzeichnis) oder (d) fuer Download listing. (q) fuer Quit."
read in_put
case $in_put in
"q")
rm $HOME/.netrc
break
;;
"d")
wget_opt="-r"
wget -r -l 100 ftp://"$backup_serv":21/"$wget_verz"
;;
*)
wget_verz=$(echo $in_put|sed 's/^\///g')
;;
esac
done
;;
"6")
while :
do
echo -n "Quell Ordner angeben:"
read infold
if [ -d "$infold" ]
then
break
else
echo "Quell Ordner $infold nicht gefunden."
fi
done
while :
do
echo -n "Quell Datenbank angeben:"
read indb
testf=$(find $infold -maxdepth 1 -type f -name $indb\*.sql)
if [ "$testf" != "" ]
then
break
else
echo "Quell Datenbank $infold/$indb nicht gefunden"
fi
done
echo -n "Ziel Datenbank angeben:"
read targetdb
if [ -f "$targetdb" ]
then
echo "$targetdb ueberschreiben [y/n]:"
read userwrite
if [ $userwrite == y -o $userwrite == j ]
then
> "$targetdb"
find $infold -maxdepth 1 -type f -name $indb\*schema.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Schemas der Datenbank $indb zu $targetdb erfolgreich hinzugefuegt"
find $infold -maxdepth 1 -type f -name $indb\*00000.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Tables der Datenbank $indb erfolgreich in Datenbank $targetdb hinzugefuegt."
else
echo "Benutzer Abbruch"
exit 1
fi
else
find $infold -maxdepth 1 -type f -name $indb\*schema.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Schemas der Datenbank $indb zu $targetdb erfolgreich hinzugefuegt"
find $infold -maxdepth 1 -type f -name $indb\*00000.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Tables der Datenbank $indb erfolgreich in Datenbank $targetdb hinzugefuegt."
fi
;;
*)
echo "invalid option $REPLY"
;;
esac
done
}
+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
Regular → Executable
+46 -13
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
fi 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" 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=""
@@ -52,14 +81,18 @@ if [ ! -d "$localSavePath" ]; then
fi fi
fi fi
# Herunterladen der Dateien vom Remote-Server # Herunterladen der Dateien vom Remote-Server (mit Nummernpräfix gegen Überschreiben gleicher Namen aus verschiedenen Unterordnern)
counter=1
for file in $fileList; do for file in $fileList; do
scp "$LUSER@$server:$file" "$localSavePath/" basename=$(basename "$file")
localFile="${localSavePath}/${counter}_${basename}"
scp "$LUSER@$server:$file" "$localFile"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Fehler beim Herunterladen der Datei $file." echo "Fehler beim Herunterladen der Datei $file."
else else
echo "Datei $file erfolgreich heruntergeladen." echo "Datei $file erfolgreich heruntergeladen als ${counter}_${basename}."
fi fi
((counter++))
done done
echo "Alle Dateien wurden im Verzeichnis $localSavePath gespeichert." echo "Alle Dateien wurden im Verzeichnis $localSavePath gespeichert."
+99
View File
@@ -0,0 +1,99 @@
# wpchecker
Tool zum Schnellen prüfen mehrerer WordPress-Installationen
---
## Features
- Prüfen der Coreversion
- Prüfen der Core Checksums
- Prüfen der Plugin Checksums
- Prüfen der Adminnutzer
---
## Installation
1. Repository klonen oder Skript kopieren:
```bash
git clone git.int.loki-net.at/esn-support-bash-snippets.git
cd esn-support-bash-snippets/legacy/wpchecker
chmod +x wpchecker.sh
```
2. Abhängigkeiten (falls vorhanden) installieren:
- [`wp-cli`](https://group-one.atlassian.net/wiki/spaces/EASYNAME/pages/33673314407/WP-CLI-Mastery)
---
## Nutzung
Skript kann im Prinzip von überall aus dem Usercontainer abgesetzt werden, da es über die $HOME-Variable direkt das html-Verzeichnis prüft.
### Standardaufruf
```bash
./wpchecker.sh
```
### Beispiele
```bash
./wpchecker.sh
```
---
## Optionen
```
Usage: ./<scriptname> [OPTIONS]
--help Zeigt diese Hilfe
--option Beispieloption
YYYY-MM-DD Beispiel für Datumsargument
```
---
## Beispielausgabe
```bash
bash wpchecker
WPChecker wird gestartet...
Führe zu prüfenden Usernamen an: yun
yun
Führe Stammverzeichnis der zu prüfenden WordPress-Installationen an: html
html
Beginne Prüfung der WordPress-Installationen
++++++++++++++++++++
Prüfe html/pbtest/classicp
+++++++++++++++++
6.2.9
X Coresum-Fehler!
OK Kein eindeutiger Hinweis auf wp2shell!
OK Plugins okay!
Prüfe html/apps/wordpress-134151
+++++++++++++++++
7.1
OK Kein eindeutiger Hinweis auf wp2shell!
OK Plugins okay!
```
---
## Setup-Hinweise
Falls notwendig, Alias in `~/.bashrc` des Kunden setzen:
```bash
alias wpchecker='~/bin/wpchecker.sh'
```
---
## Notes
- WP-CLI muss unter /data/web/eUser/bin abgelegt und ausführbar sein
- ToDos
- non-interaktive Version bauen
+66
View File
@@ -0,0 +1,66 @@
#! /usr/bin/env bash
# Tool zum Schnellen prüfen mehrerer WordPress-Installationen
# Maintainer: peignerpausz
set -ou pipefail
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
RESET="\033[0m"
declare -a wpuser
declare wppath
declare uploads
printf "WPChecker wird gestartet...\n\n"
printf "Führe zu prüfenden Usernamen an: "
read -a wpuser
echo "${wpuser[@]}"
printf "Führe Stammverzeichnis der zu prüfenden WordPress-Installationen an: "
read wppath
echo "$wppath"
printf "Beginne Prüfung der WordPress-Installationen\n++++++++++++++++++++\n"
for wordpress in $(find $wppath -type f -name "wp-config.php" -exec dirname {} \;); do
[[ -d "$wordpress" ]] || continue
# Setzt Prüfung nur für alle Verzeichnisse mit einer vorhandenen wp-config.php fort.
# Wenn viele Verzeichnisse geprüft werden ist für die Übersichtlichkeit die Unterdrückung von Fehlern mittels 2>/dev/null empfehlenswert.
printf "\nPrüfe $wordpress\n+++++++++++++++++\n"
corev=$(php ~/bin/wp-cli.phar core version --path="$wordpress")
printf "${YELLOW}%s${RESET}\n" "$corev"
coresum=$(php ~/bin/wp-cli.phar core verify-checksums --path="$wordpress" 2>/dev/null)
if [[ $? > 0 ]]; then
printf "${RED}X${RESET} Coresum-Fehler!\n"
else
printf="${GREEN}OK${RESET} Coresum okay!\n"
fi
userlist=$(php ~/bin/wp-cli.phar user list --role=administrator --path="$wordpress")
for a in "${wpuser[@]}"; do
if printf "%s" "$userlist" | grep -Fq -- $a; then
printf "${RED}X${RESET} Hinweis auf wp2hsell gefunden! Username: %s\n Rate zur Prüfung von wp-content/uploads auf .htaccess und php-Files.\n" "$a"
else
printf "${GREEN}OK${RESET} Kein eindeutiger Hinweis auf wp2shell!\n"
fi
done
plugincheck=$(php ~/bin/wp-cli.phar plugin verify-checksums --all --path="$wordpress" 2>/dev/null)
if [[ $? > 0 ]]; then
printf "${RED}X${RESET} Plugins prüfen!\n Rate zur Prüfung von wp-content/uploads auf .htaccess- und .php-Files\n"
else
printf "${GREEN}OK${RESET} Plugins okay!\n"
fi
for uploads in $(find $wppath -type d -wholename "wp-content/uploads" -exec dirname {} \;); do
[[ -d "$uploads" ]] || continue
printf "Prüfe Upload-Folder auf verdächtige .htaccess-Files\n"
htaccesschecker=$(find "$uploads" -type f -name ".htaccess")
if printf "%s" "$htaccesschecker" | grep "*.php"; then
printf "${RED}X${RESET} .htaccess im Uploadfolder gefunden: %s\n" "$htaccesschecker"
else
printf"${GREEN}OK${RESET} keine .htaccess im Uploadfolder gefunden!\n"
fi
printf "Prüfe Upload-Folder auf verdächtige php-Files\n"
phpchecker=$(find "$uploads" -type f -name "*.php" | wc -l)
if [[ "$phpchecker" > 0 ]]; then
printf "${RED}X${RESET} PHP-Files im Uploadfolder gefunden: %s\n" "$phpchecker"
else
printf "${GREEN}OK${RESET} keine PHP-Files im Uploadfolder gefunden!\n"
fi
done
done
+15 -1
View File
@@ -20,9 +20,23 @@ Die Dokumentationen werden in Unterordnern zu den jeweiligen Skripten gepflegt.
### [`plesk`](./plesk) ### [`plesk`](./plesk)
Dieses Skript stellt eine SSH-Verbindung zu einem angegebenen Webserver her und generiert so einen einmaligen Login-Link für das Plesk Admin Panel des gewünschten Servers. Dieses Skript stellt eine SSH-Verbindung zu einem angegebenen Webserver her und generiert so einen einmaligen Login-Link für das Plesk Admin Panel des gewünschten Servers.
- [Dokumentation & Beispiele](./plesk/README.md) - [Dokumentation & Beispiele](./plesk/README.md)
### [`wh20`](./wh20)
Dieses Skript verbindet zum angegbenen Webserver via SSH
- [Dokumentation & Beispiele](./wh20/README.md)
### [`spamcheck`](./spamcheck)
Dieses Skript ermöglicht den schnellen Check nach MS365-Fehlercodes, sowie für Spamhaus-Blockmeldungen.
- [Dokumentation & Beispiele](./spamcheck/README.md)
### [`adspam`](./adspam)
Dieses Skript ermöglicht den schnellen Check nach MS365-Fehlercodes, sowie für Spamhaus-Blockmeldungen auf Adino-Server direkt von der Connect aus.
- [Dokumentation & Beispiele](./adspam/README.md)
### [`donaspam`](./donaspam)
Dieses Skript ermöglicht den schnellen Check nach MS365-Fehlercodes, sowie für Spamhaus-Blockmeldungen auf DONA-Server direkt von der Connect aus.
- [Dokumentation & Beispiele](./donaspam/README.md)
## Lizenz / Sichtbarkeit ## Lizenz / Sichtbarkeit
+64
View File
@@ -0,0 +1,64 @@
# adspam - schneller Spamcheck für MS365 und Spamhaus auf Adino-Server
## Funktion
Dieses Skript führt am jeweiligen adino-Host ein grep für geläufige MS365-Fehlercodes sowie Spamhaus auf /var/log/maillog durch und gibt die Anzahl der Treffer für dieses an.
Sofern keine Ergebnisse für den jeweiligen Tag gefunden werden, werden nur die Beginn- und Endzeile des Checks ausgegeben.
## Voraussetzungen
- SSH-Zugriff auf den Zielserver
- Das [`spamcheck`](../spamcheck/spamcheck.sh)-Skript muss auf den Zielservern installiert und ausführbar sein.
- Das [`adspam`](./adspam.sh)-Skript ist korrekt auf der connect installiert und ausführbar.
## Installation
```bash
cd
mkdir bin && cd bin
vi adspam
chmod +x adspam
```
## Verwendung
```bash
USER@connect-lej ~ $ adspam
```
## Syntax
```bash
adspam
```
## Beispiele
```bash
# Von der Connect aus abgesetzt.
USER@connect-lej ~ $ adspam
=== Todays Spamcheck on Wed Apr 15 13:13:22 CEST 2026 ===
=== srv244.adino.at Spamcheck ===
✅ All systems green.
=== srv251.adino.at Spamcheck ===
✅ All systems green.
=== srv252.adino.at Spamcheck ===
✅ All systems green.
=== srv268.adino.at Spamcheck ===
✅ All systems green.
=== srv272.adino.at Spamcheck ===
✅ All systems green.
```
## Troubleshooting
# zu hohe Anzahl an S3150
Am jeweiligen adino-Webserver prüfen durch gezieltes grep nach `S3150`, ob es sich hierbei um einen anderen String handelt, da Plesk leider auch den String verwendet. -->
```bash
sudo grep -F 'S3150' /var/log/maillog
```
---
*Maintainer: peignerpausz*
+9
View File
@@ -0,0 +1,9 @@
#! /usr/bin/env bash
# Automatisierter Spamcheck für MS365 error-codes und Spamhaus rejections auf Adino-Server
# Maintainer: peignerpausz
printf '⚠️ Initiating Spamcheck for adino-servers! ⚠️ \n \n'
for a in 244 251 252 268 272
do ssh srv$a.adino.at -- bash -lc '~/bin/spamcheck'
done
echo
+144
View File
@@ -0,0 +1,144 @@
# damagereport - 📬 your daily dose of mail-damage
Kurzbeschreibung des Skripts:
![Damage Report Picard](https://i.imgflip.com/1hdas2.jpg)
Am besten in die .bashrc packen, damit es bei jedem Systemstart einem Schlecht wird. 🥴
---
## Features
- Kombinierte Abfrage von checkms, adspam und donaspam
---
## Installation
1. Repository klonen oder Skript kopieren:
```bash
git clone <gitea-url>/esn-support-bash-snippets.git
cd esn-support-bash-snippets/wh20/damagereport.sh
chmod +x damagereport.sh
```
2. Abhängigkeiten installieren:
- [`checkms`](../../legacy/checkms/checkms.sh)
- [`adspam`](../adspam/adspam.sh)
- [`donaspam`](../donaspam/donaspam.sh)
- [`spamcheck`](../spamcheck/spamcheck.sh) --> muss auf jedem zu prüfenden Server unter `~/bin/spamcheck` hinterlegt sein. Siehe [Serverliste](./serverliste.md)
---
## Nutzung
### Standardaufruf
```bash
./damagereport.sh
```
### Beispiele
```bash
./damagereport.sh
./damagereport.sh 2025-09-08 # Variable Logabfrage muss erst in adspam, donaspam und spamcheck implementiert werden
```
---
## Optionen
```bash
Usage: ./damagereport.sh [OPTIONS]
--help Zeigt diese Hilfe
--option Beispieloption
YYYY-MM-DD Beispiel für Datumsargument
```
---
## Beispielausgabe
```bash
eign01@connect-lej ~ $ damagereport
Bridge, give me Fri Apr 17 12:49:51 CEST 2026 damagereport!
🚨 Initiating damagereport for mailservices!
Starte checkms fuer 2026-04-17
Analysiere 2026-04-17.log
COUNT IP CODE
----- ---------------- ------
⚠️ Initiating Spamcheck for adino-servrs ⚠️
🚀 srv212.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv237.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv244.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv251.adino.at Spamcheck 🛠️
❌ Anzahl S7772: 6
🚀 srv252.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv268.adino.at Spamcheck 🛠️
❌ Anzahl S7772: 6
🚀 srv272.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv279.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv280.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv285.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv307.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv327.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv353.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv358.adino.at Spamcheck 🛠️
✅ All systems green.
🚀 srv395.adino.at Spamcheck 🛠️
✅ All systems green.
⚠️ Initiating spamcheck on inname-servers
=== ws20.inname.net Spamcheck ===
✅ All systems green.
=== ws21.inname.net Spamcheck ===
✅ All systems green.
=== ws22.inname.net Spamcheck ===
✅ All systems green.
=== ws23.inname.net Spamcheck ===
✅ All systems green.
=== ws24.inname.net Spamcheck ===
✅ All systems green.
=== ws25.inname.net Spamcheck ===
✅ All systems green.
=== ws26.inname.net Spamcheck ===
✅ All systems green.
=== ws27.inname.net Spamcheck ===
❌ Anzahl S3150: 5
=== ws28.inname.net Spamcheck ===
✅ All systems green.
=== ws29.inname.net Spamcheck ===
✅ All systems green.
=== ws30.inname.net Spamcheck ===
✅ All systems green.
```
---
## Setup-Hinweise
Falls notwendig, Alias in `~/.bashrc` setzen:
```bash
alias damagereport='~/pfad/zum/repo/wh20/damagereport/damagereport.sh'
```
---
## Notes
- Derzeit kombiniert dieses Skript wirklich nur die Standardausgaben von checkms, adspam und donaspam in einen zusammenhängenden Bericht.
- ToDos
- `spamcheck` - und damit `adspam` und `donaspam` - auch auf andere Logs als `/var/log/maillog` zugreifen lassen
+26
View File
@@ -0,0 +1,26 @@
#! /usr/bin/env bash
# Damagereport - kombinierte Ausgabe von checkms, adspam und donaspam
# Maintainer: peignerpausz
# --- Funktionen ---
usage() {
cat <<USAGE
Usage: $0 [OPTIONS] [YYYY-MM-DD]
kombinierte Ausgabe von checkms, adspam und donaspam
Konfig-Optionen:
--help Diese Hilfe
USAGE
}
# --- Argumente parsen ---
while [[ $# -gt 0 ]]; do
case "$1" in
--help) usage; exit 0 ;;
*) echo "Unbekannte Option: $1" >&2; usage; exit 1 ;;
esac
done
printf "Bridge, give me %s damagereport! \n \n" "$(date)"
printf "⚠️ Initiating damagereport for our mailservers! \n"
bash ~/bin/checkms && ~/bin/adspam && ~/bin/donaspam
+47
View File
@@ -0,0 +1,47 @@
# Serverliste
# Legacy-Server
![The good stuff](https://media.npr.org/assets/img/2023/05/26/honest-work-meme-c7034f8bd7b11467e1bfbe14b87a5f6a14a5274b.jpg)
- web01.in.easyname.com..web26.in.easyname.com
- web107
- web114
- web119
- web501.in.easyname.com..web532.in.easyname.com
# WH20-Server
![The not so good stuff](https://i.imgflip.com/9r6lbk.jpg)
- web1.wh20.easyname.systems .. web25.wh20.easyname.systems
## inname
![DONA - where servers go to die](https://thenib.com/wp-content/uploads/2019/08/this-is-not-fine-004-4f0492-1.png)
- ws20.inname.net
- ws21.inname.net
- ws22.inname.net
- ws23.inname.net
- ws24.inname.net
- ws25.inname.net
- ws26.inname.net
- ws27.inname.net
- ws28.inname.net
- ws29.inname.net
- ws30.inname.net
## adino
![adino beim Benamsen der Server so](https://www.gifcen.com/wp-content/uploads/2022/05/kylo-ren-more-gif.gif)
- srv212.adino.at
- srv237.adino.at
- srv244.adino.at
- srv251.adino.at
- srv252.adino.at
- srv268.adino.at
- srv272.adino.at
- srv279.adino.at
- srv280.adino.at
- srv285.adino.at
- srv307.adino.at
- srv327.adino.at
- srv353.adino.at
- srv358.adino.at
- srv395.adino.at
+76
View File
@@ -0,0 +1,76 @@
# adspam - schneller Spamcheck für MS365 und Spamhaus auf inname-Server
## Funktion
Dieses Skript führt am jeweiligen inname-Host ein grep für geläufige MS365-Fehlercodes sowie Spamhaus auf /var/log/maillog durch und gibt die Anzahl der Treffer für dieses an.
Sofern keine Ergebnisse für den jeweiligen Tag gefunden werden, werden nur die Beginn- und Endzeile des Checks ausgegeben.
## Voraussetzungen
- SSH-Zugriff auf den Zielserver
- Das [`spamcheck`](../spamcheck/spamcheck.sh)-Skript muss auf den Zielservern installiert und ausführbar sein.
- Das [`donaspam`](./donaspam.sh)-Skript ist korrekt auf der connect installiert und ausführbar.
## Installation
```bash
cd
mkdir bin && cd bin ## nur wenn der Folder nicht bereits vorhanden ist
vi donaspam
chmod +x donaspam
```
## Verwendung
```bash
USER1@connect-lej ~ $ donaspam
```
## Syntax
```bash
donaspam
```
## Beispiele
```bash
# Von der Connect aus abgesetzt.
USER@connect-lej ~ $ donaspam
=== Todays Spamcheck on Wed Apr 15 13:23:04 CEST 2026 ===
=== ws20.inname.net Spamcheck ===
✅ All systems green.
=== ws21.inname.net Spamcheck ===
✅ All systems green.
=== ws22.inname.net Spamcheck ===
✅ All systems green.
=== ws23.inname.net Spamcheck ===
✅ All systems green.
=== ws24.inname.net Spamcheck ===
✅ All systems green.
=== ws25.inname.net Spamcheck ===
✅ All systems green.
=== ws26.inname.net Spamcheck ===
❌ Anzahl S3150: 24
=== ws27.inname.net Spamcheck ===
✅ All systems green.
=== ws28.inname.net Spamcheck ===
❌ Anzahl S775: 5
=== ws29.inname.net Spamcheck ===
✅ All systems green.
=== ws30.inname.net Spamcheck ===
✅ All systems green.
```
## Troubleshooting
# zu hohe Anzahl an S3150
Am jeweiligen inname-Webserver prüfen durch gezieltes grep nach `S3150`, ob es sich hierbei um einen anderen String handelt, da Plesk leider auch den String verwendet. -->
```bash
sudo grep -F 'S3150' /var/log/maillog
```
---
*Maintainer: peignerpausz*
+8
View File
@@ -0,0 +1,8 @@
#! /usr/bin/env bash
# Automatisierter Spamcheck für MS365 error-codes und Spamhaus rejections auf inname-Server
# Maintainer: peignerpausz
printf '⚠️ Initiating Spamcheck for inname-servers! ⚠️ \n \n'
for a in {20..30}
do ssh ws$a.inname.net -- bash -lc '~/bin/spamcheck'
done
+52
View File
@@ -0,0 +1,52 @@
# spamcheck - schneller Spamcheck für MS365 und Spamhaus
## Funktion
Dieses Skript führt am jeweiligen Plesk-Host ein grep für geläufige MS365-Fehlercodes sowie Spamhaus auf /var/log/maillog durch und gibt die Anzahl der Treffer für dieses an.
## Voraussetzungen
- SSH-Zugriff auf den Zielserver
- Das Skript muss am Zielserver unter `$HOME/bin` oder `$HOME/spamcheck.sh` abgelegt werden.
- Das Skript muss ausführbar sein (`chmod +x spamcheck` oder `chmod +x spamcheck.sh`)
## Installation
tba.
## Verwendung
```bash
spamcheck
```
## Syntax
```bash
spamcheck
```
## Beispiele
```bash
# random Plesk-Server
eign01_easyname.at@ws25 ~ $ spamcheck
=== ws25.inname.net Spamcheck ===
✅ All systems green.
eign01_easyname.at@ws26 ~ $ spamcheck
=== ws26.inname.net Spamcheck ===
❌ Anzahl S3150: 24
```
## Troubleshooting
# zu hohe Anzahl an S3150
Prüfen durch gezieltes grep nach `S3150`, ob es sich hierbei um einen anderen String handelt. -->
```bash
sudo grep -F 'S3150' /var/log/maillog
```
---
*Maintainer: peignerpausz*
+20
View File
@@ -0,0 +1,20 @@
#! /usr/bin/env bash
# Spamcheck für MS365 error-codes und Spamhaus rejections
# Maintainer: peignerpausz
printf '🚀 %s Spamcheck 🛠️ \n' "$(hostname)"
found_errors=0
for a in S3150 S775 S7771 S7772 S7773 S7774 S7775 S7776 S7777 S7778 S7779 Spamhaus
do
count=$(sudo grep -c "\($a\)" /var/log/maillog 2>/dev/null)
count=${count//$'\r'/}
count=${count//[^0-9]/}
count=${count:-0}
if [ "$count" -gt 0 ]; then
printf "❌ Anzahl %s: %s\n" "$a" "$count"
found_errors=1
fi
done
if [ "$found_errors" -eq 0 ]; then
printf "✅ All systems green.\n"
fi
+107
View File
@@ -0,0 +1,107 @@
# wh20 - SSH-Shortcuts für easyname WH20 Webserver
## Funktion
Dieses Skript stellt eine SSH-Verbindung zu einem angegebenen WH20 Webserver her. Optional kann über den Parameter `--tenant` die Domain angepasst werden, um auf Server in verschiedenen Tenant-Umgebungen zuzugreifen.
## Voraussetzungen
- SSH-Zugriff auf den Zielserver
- Der Benutzername muss als Umgebungsvariable `WHUSER` gesetzt sein
- Das Skript muss ausführbar sein (`chmod +x wh20.sh`)
## Installation
1. **WHUSER Variable setzen** (in `~/.bashrc` oder `~/.bash_env`):
```bash
export WHUSER="deinusername"
```
2. **Installation über Installer**:
```bash
# Im Repository-Hauptverzeichnis
./install.sh
```
## Verwendung
### Standard-Verbindung (easyname.systems)
```bash
wh20 web15
```
→ Verbindet zu `web15.wh20.easyname.systems`
### Mit Tenant adino
```bash
wh20 web15 --tenant adino
```
→ Verbindet zu `web15.adino.at`
### Mit Tenant dona
```bash
wh20 web15 --tenant dona
```
→ Verbindet zu `web15.inname.net`
## Syntax
```bash
wh20 <webserver> [--tenant adino|dona]
```
### Parameter
- `<webserver>`: Name des Webservers (z.B. `web15`, `srv272`, `ws12`)
- `--tenant`: Optional. Bestimmt die Domain-Endung:
- `adino` → `<webserver>.adino.at`
- `dona` → `<webserver>.inname.net`
- Ohne Angabe → `<webserver>.wh20.easyname.systems`
## Domain-Mapping
| Tenant | Domain-Pattern |
|--------|----------------|
| (kein) | `<webserver>.wh20.easyname.systems` |
| `adino` | `<webserver>.adino.at` |
| `dona` | `<webserver>.inname.net` |
## Beispiele
```bash
# Standard WH20 Server
wh20 web15
wh20 srv272
# Adino Tenant
wh20 web15 --tenant adino
wh20 ws12 --tenant adino
# Dona Tenant
wh20 web15 --tenant dona
wh20 srv272 --tenant dona
```
## Troubleshooting
### WHUSER nicht gesetzt
```
Fehler: Bitte WHUSER setzen!
```
**Lösung**: `export WHUSER="deinusername"` in ~/.bashrc hinzufügen
### Unbekannter Tenant
```
Unbekannter Tenant: <tenant>
```
**Lösung**: Nur `adino` oder `dona` als Tenant-Wert verwenden
### Webserver-Name fehlt
```
Usage: wh20 <webserver> [--tenant adino|dona]
```
**Lösung**: Webserver-Namen als erstes Argument angeben
---
*Maintainer: ado*
+47
View File
@@ -0,0 +1,47 @@
#!/usr/bin/env bash
# wh20 - SSH-Shortcuts für easyname WH20 Webserver
# Maintainer: ado
servername=""
tenant=""
while [[ $# -gt 0 ]]; do
case "$1" in
--tenant)
tenant="$2"
shift 2
;;
*)
servername="$1"
shift
;;
esac
done
if [ -z "$servername" ]; then
echo "Usage: $0 <webserver> [--tenant adino|dona]"
exit 1
fi
# Set domain based on tenant
case "$tenant" in
adino)
fqdn="$servername.adino.at"
;;
dona)
fqdn="$servername.inname.net"
;;
"")
fqdn="$servername.wh20.easyname.systems"
;;
*)
echo "Unbekannter Tenant: $tenant"
exit 1
;;
esac
# Define the username
username="${WHUSER:?Bitte WHUSER setzen!}" # Wenn WHUSER als Umgebungsvariable gesetzt ist, wird dieser verwendet. Sonst Username eintragen.
# Open an SSH connection
exec ssh $username@$fqdn "$@"
+28
View File
@@ -0,0 +1,28 @@
#! /usr/bin/env bash
# Tool zum Schnellen prüfen mehrerer WordPress-Installationen
# Maintainer: peignerpausz
declare -a WORDPRESS=()
WORDPRESS="$(ls | grep wordpress)"
printf "Beginne Prüfung der Adminnutzer\n\n"
for wordpress in wordpress*/; do
[[ -d "$wordpress" ]] || continue
echo "Prüfe $wordpress"
userlist=$(php ~/bin/wp-cli.phar user list --role=administrator --path="$wordpress" 2>/dev/null)
if [[ -n "$userlist" ]]; then
printf "%s\n\n" "$userlist"
else
printf "Fehler bei %s\n\n" "$wordpress"
fi
done
for uneasy in $(find html/. -type f -name "wp-config.php" -exec dirname {} \;); do
[[ -f "$uneasy" ]] || continue
echo "Prüfe $uneasy"
userlist2=$(php ~/bin/wp-cli.phar user list --role=administrator --path="$uneasy")
echo $userlist2
if [[ -n "$userlist2" ]]; then
printf "%s\n\n" "$userlist2"
else
printf "Fehler bei %s\n\n" "$uneasy"
fi
done