Wie kann ich jede Terminalsitzung automatisch aufzeichnen?

Wie kann ich jede Terminalsitzung automatisch aufzeichnen?

Ich verwende gerne Tools wie history, script, und asciinemazum Aufzeichnen und Überprüfen von xterm-Sitzungen (d. h. bash/ sh) aus typischen, allgemeinen Verwaltungsgründen und manchmal auch zum umfassenden Studium/zur Wiederholung; als Lernwerkzeug.

  • Ich habe daran gedacht, den Standard $SHELLals direkten Pfad zu den genannten Tools und/oder Befehlen festzulegen, etwa:

    • /bin/script transcript.log;
    • /bin/asciinema rec -w0.5 term_log.json;
  • Aber diese Tools sind normalerweise auf einen Standardsatz angewiesen $SHELL(d. h /bin/bash. , /bin/sh, /bin/zsh, usw.).

  • Außerdem habe ich das Gefühl, dass die Neudefinition von Systemvariablen (z. B. $SHELL, , usw.) oder der Versuch, es mit Konfigurations- ( ) und Punktdateien ( / ) $TERMzum Laufen zu bringen, mit allen möglichen Lücken und potenziellen Problemen behaftet sein wird.*.conf~/.bashrc~/.bash_profile

  • Wenn ich mich jedoch dazu entscheide oder mir klar wird, dass ich eine Abschrift einer Sitzung haben möchte, geschieht dies im Nachhinein oder ich bin bereits mitten im interessanten Teil oder etwas Ähnliches.

Was ist die richtige oder beste Vorgehensweise, um so etwas einzurichten, dass einfach alles (vorzugsweise stdin( stdoutund stderrwenn zutreffend) usw.) automatisch protokolliert wird?

Antwort1

So etwas in Ihrer .bash_profileoder .bashrckönnte für Sie funktionieren:

if test -t 0 -a -t 1 -a -z "$SCRIPTING"
then
    export SCRIPTING="$HOME/.script.$(date +%Y%m%d_%H%M%S).$$)"
    exec script "$SCRIPTING"
fi

verwandte Informationen