====== Snippets: Shell ======
[[:snippets:start|← Zurück zu :snippets:start]]
==== Kompatibilität ====
Sofern nicht anders gekennzeichnet:
^ Betriebssystem ^ Shell ^
| macOS & GNU/Linux | ''bash'' & ''zsh'' |
===== OpenSSH =====
* Neue Private-Keys als Typ ''ed25519'' generieren (Elliptic-Curve-Algorithmus, deshalb trotz kurzer Keys sicherer als ''rsa'' mit maximaler Länge)
* Als Kommentar idealerweise ''user@hostname'' setzen, da dieser an den Public-Key angehängt wird und so ein Key auf einem Remote-System einfach einem Client zugeordnet werden kann.
* [[https://man.archlinux.org/man/ssh-keygen.1|ssh-keygen(1) — ArchLinux manual page]]
Für moderne Systeme mit OpenSSH kann mit folgendem Befehl ein sicherer Key erzeugt werden. Außer bei Embedded-Distributionen (OpenWRT verwendet z.B. einen minimalen SSH-Server mit weniger Features) hatte ich bisher keine Probleme mit dem folgenden Befehl:
# ed25519-Key mit 100 statt 16 KDF-Runden (deutlich sicherer); Kommentar mit Brnutzer- und Hostname; leerem Passwort und ohne Nachfrage nach einem Dateinamen
ssh-keygen \
-t ed25519 \
-a 100 \
-C "$USER@$(hostname -f)" \
-N "" \
-f ~/.ssh/id_ed25519
===== journald/journalctl =====
* System-Log unter systemd-basierten GNU/Linux-Distributionen wie z.B. Debian oder ArchLinux
* [[https://wiki.archlinux.org/title/Systemd/Journal|systemd/Journal - ArchWiki]]
* [[https://man.archlinux.org/man/journalctl.1|journalctl(1) — ArchLinux manual page]]
> Hinweis: Das systemweite Journal kann nur von ''root'' und Mitgliedern der Gruppe ''systemd-journal'' angezeigt werden.
==== Systemlog seit Mitternacht ====
Folgt dem Journal und zeigt neue Meldungen umgehend an. Es wird nicht automatisch ein Pager (z.B. ''less'') gestartet, stattdessen wird über den Puffer des Terminal-Emulators zurück gescrollt.
journalctl \
--output=short-iso \
--no-hostname \
--since="$(date +%Y-%m-%d) 00:00:00" \
--no-pager \
--follow
==== Log seit Mitternacht für eine einzelne Unit ====
Wie das vorherige Beispiel, aber auf eine einzelne systemd-Unit beschränken, statt das gesamte System-Log anzuzeigen.
* Die dazu gekommene Option ''--service='' akzeptiert jegliche Unit-Typen
* Das Standard-Suffix ''.service'' muss dabei zwar nicht explizit genannt werden, ich persönlich bevorzuge aber den ganzen Unit-Namen, deshalb wird es hier genannt.
journalctl \
--output=short-iso \
--no-hostname \
--since="$(date +%Y-%m-%d) 00:00:00" \
--no-pager \
--follow \
--unit=apache2.service
==== Unit-Log der aktuellen Stunde ====
Zeigt das Log einer Unit seit dem Beginn der aktuellen Stunde an. Gegenüber dem vorherigen Beispiel wurde nur die Option ''--since'' abgeändert, sodass die Stunde von ''date'' gesetzt wird, statt ''00''.
* In der Praxis ist oft nicht mehr als die letzten 20-30 Minuten von Relevanz
* Durch Weglassen der Option ''--unit'' kann stattdessen das gesamte System-Log angezeigt werden.
journalctl \
--output=short-iso \
--no-hostname \
--since="$(date +%Y-%m-%d\ %H):00:00" \
--no-pager \
--follow \
--unit=NetworkManager.service