H ILYGO Hawser
Zur Website

Snippets und Inspektion

Wiederkehrende Befehle speichern, sie auf dem richtigen Server ausführen und den Zustand einer Maschine ablesen, ohne etwas zu tippen.

Wozu ein Snippet dient

Ein Snippet ist ein Block von Shell-Befehlen, der in Ihrem Tresor liegt: ein Name, ein Etikett, eine Beschreibung und ein Inhalt über beliebig viele Zeilen. Ausführen lässt es sich in einem offenen Terminal, automatisch beim Aufbau einer Verbindung oder ganz ohne Sitzung über einen exec-Kanal.

Der Inhalt ist genauso verschlüsselt wie ein Passwort, innerhalb der Datei .ivault (siehe Was verschlüsselt wird). Geschrieben wird synchron: Die Bestätigung erscheint erst, wenn die Daten wirklich auf der Platte liegen.

Die Ansicht öffnet sich über die linke Navigationsleiste, Schaltfläche 🧩 Snippets, fünftes Symbol. Ein anderer Weg führt nicht dorthin: weder ein macOS-Menüeintrag noch ein Tastaturkürzel.

Die Snippets-Ansicht mit mehreren Kacheln, jede mit Namen, Etikett-Plakette und den Schaltflächen Run, Bearbeiten und Löschen.
Die Zeile unter dem Namen zeigt die Beschreibung. Lassen Sie sie leer, setzt Hawser dort die erste Zeile des Inhalts ein – ein guter Grund, Snippets mit einem sprechenden Kommentar zu beginnen.

Ein Snippet anlegen

  1. Ansicht Snippets → Schaltfläche + Snippet oben rechts. Aus einer anderen Ansicht heraus tun ⌘K und dann New snippet dasselbe.
  2. Füllen Sie die vier Felder des Dialogs New snippet aus.
  3. Klicken Sie auf Save. Die Meldung Snippet saved bestätigt die Speicherung, und die Liste wird neu aufgebaut.
FeldWofür es steht
NameDer Name in der Liste, in der Palette ⌘K und in der nummerierten Auswahl eines Tabs. Pflichtfeld.
TagEin frei wählbares Etikett (ops, diag …), als Plakette angezeigt. Eines der beiden einzigen Felder, die durchsucht werden.
DescriptionEine Erklärzeile, die unter dem Namen erscheint.
Contenu (Inhalt)Die Befehle selbst. Pflichtfeld. Die vollständige Beschriftung lautet Contenu (multi-lignes, supporte {{host}} {{user}} {{port}} {{date}}).

Fehlen Name oder Inhalt, erscheint rot Name and body required, und nichts wird gespeichert. Hat sich der Tresor zwischen dem Öffnen des Dialogs und dem Klick auf Save gesperrt, kommt stattdessen no vault open: entsperren und alles noch einmal eingeben – die Eingaben bleiben nicht erhalten.

Die Schaltfläche ✏️ einer Kachel öffnet denselben Dialog erneut, Titel Edit snippet, Felder vorausgefüllt. Die Schaltfläche 🗑️ fragt nach (Delete "<Name>"?), bevor der Eintrag verschwindet.

Die vier Variablen

Vier Platzhalter werden im Inhalt ersetzt, und zwar bei jeder Ausführung und nicht beim Speichern, anhand des Profils des angesprochenen Hosts. Ersetzt werden alle Vorkommen.

  • {{host}} — das Feld Host des Profils
  • {{user}} — das Feld User
  • {{port}} — der Port
  • {{date}} — Datum und Uhrzeit in UTC im ISO-Format, etwa 2026-08-12T14:23:45.678Z
echo "=== Rapport {{host}} — {{date}} ==="
df -h | sort -k5 -r | head -12

Ausführen in offener Sitzung

Drei Wege führen zum selben Ergebnis: Der aufgelöste Inhalt wird in das Terminal getippt und mit einer Zeilenschaltung abgeschlossen, genau als hätten Sie ihn eingefügt. Mehrzeiliger Inhalt läuft also Zeile für Zeile durch.

  • Ansicht Snippets → Schaltfläche ▶️ Run auf der Kachel.
  • ⌘K → einen Teil des Namens oder der Beschreibung tippen → Enter. Snippets tragen dort die Kennzeichnung SNIPPET.
  • In einem verbundenen SSH-Tab: letzte Schaltfläche der Terminalleiste, 🧩, nach 🔄, ⏺️, 📊 Server, 🐳 Docker, ☸️ K8s.

Die Auswahl hinter 🧩 öffnet einen Dialog Run snippet, der Ihre Snippets nummeriert auflistet (1. …, 2. …) und darauf wartet, dass Sie die Nummer in das Feld Enter snippet number tippen. Anklickbar ist die Liste nicht. Eine leere, nicht numerische oder nicht vergebene Nummer löst nichts aus und bringt auch keine Meldung: Der Dialog schliesst sich, und es passiert nichts. Ist kein Snippet gespeichert, antwortet die Schaltfläche No snippets defined.

Ausführen ohne offene Sitzung

Ist kein SSH-Tab offen, verhält sich ▶️ Run anders: Hawser baut eine kurzlebige Verbindung auf, führt den Befehl über einen exec-Kanal aus (das Gegenstück zu ssh serveur "commande"), trennt wieder und zeigt das Ergebnis.

  1. Ansicht Snippets▶️ Run.
  2. Lesen Sie die Rückfrage Run "<Snippet>" via SSH (ssh-exec) on "<Host>" ? und prüfen Sie den darin genannten Hostnamen.
  3. Klicken Sie auf Run. Der Dialog Snippet output zeigt STDOUT:, danach STDERR:, sofern die Fehlerausgabe nicht leer ist, und zuletzt eine Zeile Exit:.
Leere Sitzungsansicht ohne einen einzigen offenen Verbindungstab.
Sitzungsansicht ohne Tab: In diesem Zustand öffnet ▶️ Run eine kurzlebige Verbindung, statt ein Terminal anzusprechen.

Dieser Kanal ist keine Anmelde-Shell: Der PATH ist der des SSH-Daemons, nicht der aus Ihrer ~/.bashrc. Ein Programm, das erst Ihr Profil in den PATH legt, wird nicht gefunden, und ein interaktives sudo kann kein Passwort entgegennehmen.

Mögliche Fehlermeldungen, in Rot: No connections SSH (kein SSH-Tab offen und kein SSH-Host im Tresor), Host introuvable, Clé SSH introuvable (vérifie l'host), wenn der im Profil verwiesene Schlüssel gelöscht wurde, Jump host introuvable sowie jump host chain too deep jenseits von vier Zwischenstationen.

Snippets beim Verbindungsaufbau

Ein SSH-Hostprofil kann Snippets benennen, die automatisch laufen, sobald die Shell bereit ist.

  1. Ansicht Hosts✏️ auf der Karte des Hosts (siehe Einen Server hinzufügen).
  2. Reiter Advanced des Profils → Feld Snippets de démarrage (un par ligne) (Start-Snippets), Untertitel Exécutés à l'ouverture d'un shell SSH.
  3. Klicken Sie ein Snippet an, um es auszuwählen; mit Cmd-Klick nehmen Sie weitere hinzu.
  4. Save. Beim nächsten Öffnen einer Shell gehen die gewählten Snippets eine halbe Sekunde nach dem Verbindungsaufbau in das Terminal.
  • Ausgeführt wird in der Reihenfolge der Liste, nicht in der Reihenfolge Ihrer Klicks.
  • Start-Snippets laufen bei jeder automatischen Neuverbindung nach einem Abbruch erneut, ebenso bei jedem Druck auf 🔄. Nehmen Sie also nur, was sich schadlos wiederholen lässt.
  • Ein bereits offener Tab behält das Profil in dem Stand, in dem es beim Öffnen war: Eine geänderte Auswahl wirkt erst im nächsten Tab.
  • Für FTP- und Telnet-Hosts gibt es das Feld nicht.

Snippets finden und ordnen

Das Suchfeld der oberen Leiste filtert die Liste beim Tippen, aber nur nach Name und Etikett. Beschreibung und Inhalt werden nicht durchsucht. Die Palette ⌘K wiederum sucht in Name und Beschreibung, nicht aber im Etikett. Dieselbe Zeichenfolge liefert auf beiden Seiten also nicht zwingend dasselbe.

Mit der Cloud-Synchronisierung reisen die Snippets verschlüsselt mit dem übrigen Tresor. Der Server erfährt, wie viele es sind, nie ihren Namen und nie ihren Inhalt. Auf das Elementkontingent zählen sie nicht: Ein neues Snippet wird nie abgelehnt, auch nicht im kostenlosen Tarif.

Die Inspektions-Dashboards

Drei Schaltflächen in der Leiste eines SSH-Tabs befragen die entfernte Maschine und bereiten das Ergebnis auf, ganz ohne Tipparbeit. Alle drei funktionieren. Sie erscheinen nur auf einem SSH-Tab; ein SFTP-, FTP- oder Telnet-Tab hat sie nicht.

Gemeinsame Mechanik: Jeder Abschnitt öffnet eine neue SSH-Verbindung, führt seinen Befehl über einen exec-Kanal aus und trennt wieder. Die Shell Ihres Tabs wird nie benutzt. Rechnen Sie mit neun aufeinanderfolgenden Verbindungen für 📊 Server, acht für ☸️ K8s und einer einzigen für 🐳 Docker.

📊 Server

Neun Abschnitte füllen sich nacheinander, mit einem Zähler n / 9 und einem Status je Abschnitt (⏳ en attente, récupération…, ✓ chargé, ⚠ erreur – wartend, wird geholt, geladen, Fehler): OS und Kernel, Uptime · charge (Laufzeit und Last), CPU, Mémoire (Speicher), Disque (Datenträger), Top-Prozesse nach Speicher, Top-Prozesse nach CPU, Netzwerk, aktive Sitzungen. Für Befehle ohne Linux-Entsprechung gibt es einen macOS-Rückfall. Dieses Dashboard versucht nie sudo und verlangt keine besonderen Rechte.

🐳 Docker

Ein einziger zusammengesetzter Befehl holt docker info, docker ps -a, docker stats und docker system df. Angezeigt werden die Kopfzeile Docker stack mit der Zahl der Container, der Images und dem belegten Speicherplatz, vier Kacheln Running / CPU / Memory / Network und darunter die Container mit ihrer Gesundheitsplakette. Die Schaltfläche ↻ Refresh holt die Daten neu, der Link Sortie brute (Rohausgabe) zeigt die uninterpretierte Antwort.

Verweigert der Daemon den Zugriff auf das Socket, erkennt Hawser das und bietet 🔒 Docker — accès refusé mit den Schaltflächen Réessayer avec sudo (Erneut mit sudo versuchen) und Annuler (Abbrechen) an; danach können Sie die Entscheidung im Hostprofil merken lassen. Für ☸️ K8s gibt es dasselbe unter dem Titel Activer sudo pour kubectl.

☸️ K8s

Acht Abschnitte als reiner Text, Zähler n / 8: cluster-info, Knoten, Namensräume, Pods, Services, Deployments, Ingress, PVC. Auf dem Server muss kubectl im PATH des SSH-Daemons liegen, und die kubeconfig muss ohne Umgebungsvariable lesbar sein, also unter ~/.kube/config.

Praxisfall: ein zäher Server