Echo-Shell-Protokoll beim Ein- und Aussteigen

Echo-Shell-Protokoll beim Ein- und Aussteigen

Während ich einen Befehl eingebe, authentifiziert sich dieser bei einem Remote-Server und führt eine Reihe von Dingen aus. Wenn er erfolgreich ist, erhalte ich eine Bash-Shell mit ihrer Umgebung.

Mein Ziel ist es, dieses Protokoll zu speichern, das ich dann in meinem Terminal ausdrucke, um es später überprüfen zu können. Nehmen wir an, mein Befehl hat aufgerufen target.

Während ich „Ziel“ eingebe, wird die folgende Meldung angezeigt.

Version:        V1.94
Options:
Date:           Thu Jun  6 17:18:39 2019
OS:             CentOS release 6.10 (Final)
....
[DEV]target>

Beachten Sie, dass die letzte Zeile impliziert, dass ich die Ziel-Shell-Umgebung betreten habe.

Ich habe es versucht echo $(target) > output.log, aber es bleibt hängen, bis ich eingebe CTRL+C.

Umgebung: CentOS 6.10

Aktualisieren

Angenommen, ich möchte, dass dieses Skript automatisch ausgeführt wird, wenn ich meinen Computer aktiviere. Es bleibt jedoch bei der Ausführung des Zielbefehls hängen, da es eine Shell eingegeben und nicht verlassen hat.

#!/bin/bash
script -c target output.log
FILENAMEME=output.log
aws s3 cp "$FILENAME" s3://logs/

Antwort1

Vielleicht möchten Sie Folgendes versuchen script:

script -c target output.log

Dadurch wird der Befehl gestartet targetund eine Abschrift der gesamten Sitzung bis zu targetihrer Beendigung in der Datei gespeichert output.log. Wenn der Befehl (Ihr target) mehrere Wörter lang ist, setzen Sie den vollständigen Befehl in Anführungszeichen.

Siehe das Handbuch für script( man script).

Antwort2

Wenn Sie den Befehl selbst nicht ändern können target, sollte Folgendes hilfreich sein:

target | tee output.bak

output.bakenthält eine Kopie der gesamten Ausgabe (in diesem Beispiel nur stdout), Sie müssen es also kürzen, wenn Sie nur die ursprünglichen Informationen möchten.

verwandte Informationen