Frage Wie protokolliere ich alle Eingaben und Ausgaben in einer Terminalsitzung?


Wie protokolliere ich die Arbeit über das Terminal? Zum Beispiel möchte ich eine Aufzeichnung aller Arbeiten, die an der Datenbank über das Terminal durchgeführt wurden.


40
2017-07-10 10:58


Ursprung


Dies ist auch in Sudo integriert. - Wilhelm Erasmus
Ich habe meine Antwort hinzugefügt, die Sie überprüfen können - Mansur Ali


Antworten:


Wenn Sie bereit sind, mit der Aufzeichnung einer Protokolldatei zu beginnen, geben Sie Folgendes ein:

script screen.log

Jetzt, bis Sie das Skript stoppen, werden alle Ein- und Ausgaben im Terminal in screen.log gespeichert. Wenn du fertig bist, tippe einfach:

exit

Ihre Datei screen.log wird im lokalen Verzeichnis gespeichert. Wenn Sie es umleiten möchten, verwenden Sie einen absoluten Pfadnamen wie z ~/screen.log. Dies wird genau das tun, was Sie suchen.

Quelle:  Ubuntu Guide - Wie man Terminalbefehle protokolliert


51
2017-07-10 11:21



Hallo, danke für die Antwort. Aber funktioniert das, wenn ich mich von der Shell aus mit der folgenden Sequenz in die mysql-Datenbank anmelde: - 1) Skript screen.log 2) mysql -u <Benutzer> -p <Datenbank> 3) einige Arbeiten an der Datenbank 4) exit; Ich sehe, dass die Datei screen.log erstellt wird, aber es enthält keine Protokolle für die Datenbank. Ich werde die Datei so schnell wie möglich teilen. Danke Ankt - Ankit
Es sollte mit allem funktionieren, was in der Konsole läuft und von "Standardeingabe" (normalerweise Ihre Tastatur) liest und auf die Standardausgabe schreibt (normalerweise Ihr Terminalfenster). Daher sollte es den mysql-Befehlszeilenclient enthalten. Die Manpage (man script) Erwähnt sogar vi (Editor)... - Izzy


Vielleicht möchten Sie es ausprobieren Ascinema. Sie können nicht nur eine Aufnahme machen, sondern sie auch teilen und den Player in Ihrem Blog, Artikel oder in einem Konferenzgespräch einbetten.


9
2017-11-15 16:04





Ich habe eine bessere Möglichkeit, Syslog für die Protokollierung jedes Shell-Befehls zu verwenden, der je nach Linux-Distribution variieren kann, aber die Methode bleibt gleich

Sie müssen einige Schritte befolgen:

Schritt 1 (Syslog-Dienst erstellen)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

Schritt # 2 (Öffnen Sie bashrc und geben Sie den folgenden Befehl ein)

# vim /root/.bashrc

# Enable CLI Logging by Mansur 08-12-2016 
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Ste # 3 (Syslog-Dienst neu starten)

# /etc/init.d/rsyslog

Hier ist ein Protokollbeispiel:

Dec 7 22:13:00 validationdb2 mahasan: root @ export [13291]: schwanz -f /var/log/mysql/mysql.log [0]
Dez 7 22:13:09 validationdb2 mahasan: root @ export [13291]: ls -lh [0]
Dec 7 22:13:27 validationdb2 mahasan: root @ export [13291]: Tastentestbefehl [0]

6
2017-12-08 07:17



freche Taktik !!! - Tom H
Hallo Mansur, kannst du mir bitte erklären, was du mit diesen Befehlen machst, es ist schwer zu verstehen, zumindest für mich. - Jasser
In Schritt 1 benenne ich einen Dienst für die Befehlsprotokollierung, die vom Prozess zum Senden von Protokollen verwendet wird. "Local6" wäre der Endpunkt für den Dienst zum Anmelden. In Schritt 2 lege ich fest, was ich eigentlich möchte "PROMPT_COMMAND = 'RETRN_VAL = $? " Dieser Teil zeichnet die Benutzereingaben und "logger -p local6.debug" auf. Dadurch wird die Protokolldatei an den Dienst gesendet, der Daten mit Hilfe des syslog-Prozesses protokolliert - Mansur Ali