T-Alternative (Benutzereingabe verfehlt)

360
Betlista

Wir verwenden ein interaktives Befehlszeilentool von Drittanbietern, und wir teeprotokollieren, was ein Benutzer getan hat.

Das Tool funktioniert so, wie es gefragt wird, welche Aktion der Benutzer ausführen möchte, und der Benutzer wählt etwas aus und fährt mit dem Untermenü fort oder die Aktion wird ausgeführt.

Vor kurzem (als wir ein solches Protokoll prüfen mussten) stellten wir fest, dass die Benutzereingaben nicht vorhanden sind. Gibt es eine Alternative - wie kann man das erreichen?

Als ich versuchte, das Tool mit zu simulieren:

$ cat r.sh read -p "Enter some text: " text echo $text  echo -n "Enter another text: " read text2 echo $text2 

Ich habe es getestet und das ist die Ausgabe

$ ./r.sh | tee run.log Enter some text: abc abc Enter another text: def def  $ cat run.log abc Enter another text: def 

Im Idealfall hätte ich gerne dasselbe, was der Benutzer gesehen hat, was nicht dasselbe ist, wie Sie es sehen können.

Lösung:

Wenn jemand es braucht, habe ich mit getestet

script -c ./r.sh script.log 

und es hat wie erwartet funktioniert + Ich habe es mit diesem Tool von Drittanbietern getestet.

0

1 Antwort auf die Frage

3
grawity

Sie könnten dafür verwenden script; es erstellt ein verschachteltes tty und zeichnet alles auf, was darin passiert.

Wenn Sie auch angeben --timing=…, können sogar abspielbare "Videos" von interaktiven Vollbild-Programmen (wie Texteditoren usw.) erstellt werden.


(Der Vollständigkeit halber - Es gibt ein weiteres ähnliches Tool asciinema, einen gehosteten Dienst, der automatisch Datensätze unter https://asciinema.org/ veröffentlicht . Nützlich für die Erstellung von Demos und Tutorials.)

Ich habe mit Dreharbeiten herumgefahren. Ein bisschen, das ich als vermisst fand, war "nicht interaktiv", um es zu beenden. ctrl D macht das interaktiv - aber nicht sicher, was es als Teil eines Skripts beenden würde. Journeyman Geek vor 7 Jahren 0
`script` startet eine _nested_-Shell (oder ein anderes Programm) und die Aufzeichnung endet, wenn diese Shell oder das Programm beendet wird. Das ist alles dazu. grawity vor 7 Jahren 0
ah, also würde exit funktionieren? Journeyman Geek vor 7 Jahren 0
Skript scheint, was ich wollte, braucht etwas Zeit, um mehr zu testen (ich habe das getestet, was ich angegeben habe und scheint in Ordnung zu sein), aber jetzt ist es eine Option ... Betlista vor 7 Jahren 0