BASSH
Bulk Automatic SSH (BASSH) führt eine definierte Befehlsliste sequenziell auf einer Liste von SSH-Hosts aus — Host für Host, Kommando für Kommando, mit kontrollierten Wartebedingungen, Live-Status pro Host und nachvollziehbarem Log. Alle Hostdaten und Aufgabenlisten bleiben ausschließlich lokal auf Ihrem Rechner.
Aktuelle Version
6.18
Jenkins Build
#18
Veröffentlicht
09.06.2026 13:30 UTC
So arbeitet BASSH
- BASSH läuft seriell: ein Host nach dem anderen, pro Host die Kommandoliste der Reihe nach. Das macht Maintenance-Fenster vorhersehbar und Logs lesbar — im Gegensatz zu einer parallelen Massenausführung, bei der man im Fehlerfall nicht mehr weiß, welcher Host wo hängt.
- Jeder Host bekommt im UI ein eigenes Statussymbol (verbinden, arbeiten, warten, OK, Fehler, offline). Während des Laufs können Sie Hosts noch abwählen, „Errors als Alertbox" umschalten oder den Lauf jederzeit über STOP beenden.
- Hostlisten und Aufgabenlisten sind einfache JSON-Dateien (z. B.
hosts.json, commands.json) — speichern, versionieren, teilen wie jeder andere Code.
- Pro Lauf wird ein Gesamtlog geschrieben, optional zusätzlich eine eigene Logdatei pro Host. Format ist UTF-8 Klartext.
Wartebedingungen zwischen Befehlen
- None — sofort zum nächsten Befehl. Standard für schnelle Info-Abfragen (
hostname, uptime, show version).
- Time — feste Wartezeit in Sekunden. Sinnvoll z. B. nach einem Service-Restart, bevor man die nächste Prüfung absetzt.
- Ping — wartet bis der Host wieder antwortet. Ideal nach
reload, reboot oder Firmware-Update auf Switches und Appliances.
- TimeThenPing — erst X Sekunden warten (damit der Reboot wirklich startet und nicht noch der alte Stack pingt), dann auf Ping warten.
- ConfirmPrompt — wartet, bis das Gerät einen y/n-Bestätigungsprompt schickt, bevor der nächste Befehl gesendet wird.
Sonderbefehl: interaktive Bestätigungen
- Mit
#confirm y bzw. #confirm n als „Befehl" wartet BASSH automatisch auf den Bestätigungsprompt der Gegenseite und sendet dann die Antwort.
- Beispiel-Sequenz für eine Cisco-Sommerzeit-Konfig:
1. clock summer-time … (waitto = ConfirmPrompt)
2. #confirm y
Variablen in Befehlen
[completeip] — vollständige IP des aktuellen Hosts.
[ip.0] … [ip.3] — einzelne Oktette ohne führende Nullen.
[ipz.0] … [ipz.3] — einzelne Oktette mit führenden Nullen (z. B. 010.001.001.005) — praktisch für Hostnamen-Konventionen.
- Eigene Feldvariablen lassen sich für Massenrollouts (VLAN, SNMP-Community, NTP-Server, …) hinterlegen.
Authentifizierung
- Passwort-Login oder SSH-Key-Login (mit optionaler Key-Passphrase) — pro Host frei wählbar.
- Unterstützt klassisches OpenSSH, Cisco IOS, Extreme, MikroTik, Linux-Server, Raspberry Pi, NAS-Systeme und alles weitere, was eine SSH-Shell anbietet.
Datenschutz & Daten-Hoheit
- BASSH sendet keinerlei Hostdaten, Logins, Kommandos oder Logs an Dritte. Es gibt keine Telemetrie, kein Analytics, keine Cloud.
- Der einzige Zugriff nach außen ist ein Update-Check (
https://bassh.de/version), der lediglich die aktuelle Versionsnummer abfragt. Es werden keine Benutzer-, Lizenz- oder Hostinformationen übertragen.
- Hostlisten, Aufgabenlisten und Logs liegen ausschließlich lokal als JSON- bzw. Klartext-Dateien auf Ihrem Rechner. Sie entscheiden, wo — ob lokal, im Team-Share oder im Git-Repository.
- Keine versteckten Netzwerkverbindungen. Code & Build sind reproduzierbar über die öffentliche Jenkins-Pipeline.
Typische Einsatzszenarien
- Konfigurations-Rollout auf 50+ Switches im Maintenance-Fenster mit ConfirmPrompt-Sicherheitsabfragen.
- Firmware-Reboot-Sequenzen mit TimeThenPing-Warten und automatischer Verifikation danach.
- Standardisierte Wartung auf Linux-Servern, Raspberry Pi-Flotten oder Container-Hosts.
- Wiederkehrende Reports (
uptime, df -h, show inventory) gesammelt in einem Log.
- MSP-Aufgaben mit pro-Kunde getrennten Hostlisten in Git.
Lizenz
- BASSH ist kostenlos nutzbar.