Aufzeichnen und Wiedergeben von Terminalsitzungen mit Asciinema unter Linux
Einleitung
Asciinema ist eine leichtgewichtige und sehr effiziente Alternative zu einem Script Terminal Session Recorder. Es ermöglicht Ihnen, Ihre Aufzeichnungen von Terminalsitzungen im JSON-Format aufzuzeichnen, wiederzugeben und zu teilen.
Der Hauptvorteil im Vergleich zu Desktop-Recordern wie Recordmydesktop, Simplescreenrecorder, Vokoscreen oder Kazam besteht darin, dass Asciinema alle standardmäßigen Terminal-Eingaben, -Ausgaben und -Fehler als a
einfachen ASCII-Text mit ANSI-Escape-Code aufzeichnet.
Infolgedessen ist die Datei im JSON-Format selbst für eine längere Terminalsitzung winzig klein. Darüber hinaus bietet das JSON-Format dem Benutzer die Möglichkeit, die Asciinema JSON-Ausgabedatei durch einfache Datei
-Übertragung, auf der öffentlichen Website als Teil des eingebetteten HTML-Codes oder auf Asciinema.org mit dem asciinema-Konto zu teilen. Für den Fall, dass Sie während Ihrer Terminalsitzung einen Fehler gemacht haben, können Sie Ihre aufgezeichnete Terminalsitzung nachträglich mit einem beliebigen Texteditor bearbeiten, d. h. wenn Sie sich mit der ANSI><-Escape-Code-Syntax auskennen.
Schwierigkeit
LEICHT
Konventionen
- # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder mit dem Befehl
sudo - $ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden
Standard-Repository-Installation
Es ist sehr wahrscheinlich, dass asciinema als Teil Ihres Distributions-Repositorys installiert werden kann. Wenn Asciinema jedoch auf Ihrem System nicht verfügbar ist oder Sie die neueste Version installieren möchten, können Sie den Linuxbrew
Arch Linux
pacman -S asciinema
Debian
apt install asciinema
Ubuntu
sudo apt install asciinema
Fedora
sudo dnf install asciinema
Installation von der Quelle
Der einfachste und empfohlene Weg, die neueste Asciinema-Version aus dem Quellcode zu installieren, ist die Verwendung des Linuxbrew-Paketmanagers.
Voraussetzungen
Die folgende Liste der Voraussetzungen erfüllt die Abhängigkeitsanforderungen sowohl für Linuxbrew als auch für Asciinema.
- Einguss
- gcc
- machen
- rubinrot
Bevor Sie mit der Installation von Linuxbrew fortfahren, stellen Sie sicher, dass die oben genannten Pakete auf Ihrem Linux-System installiert sind.
Arch Linux
pacman -S git gcc make ruby
Debian
apt install git gcc make ruby
Ubuntu
sudo apt install git gcc make ruby
Fedoras
sudo dnf install git gcc make ruby
Centos
yum install git gcc make ruby
Linuxbrew Installation
Der Linuxbrew-Paketmanager ist ein Fork des beliebten Homebrew-Paketmanagers, der auf Apples MacOS-Betriebssystem verwendet wird. Homebrew ist bekannt für seine Benutzerfreundlichkeit, was in Kürze zu sehen ist, wenn wir verwenden
Linuxbrew zur Installation von Asciinema. Führen Sie den folgenden Befehl aus, um Linuxbrew auf Ihrer Linux-Distribution zu installieren:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"
Linuxbrew ist jetzt unter Ihrer $HOME/.linuxbrew/ installiert. Was bleibt, ist, sie zu einem Teil Ihrer ausführbaren PATH-Umgebungsvariablen zu machen.
echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile
. ~/.bash_profile
Um die Linuxbrew-Installation zu bestätigen, können Sie den Befehl brew verwenden, um die Version abzufragen:
brew --version
Homebrew 1.1.7
Homebrew/homebrew-core (git revision 5229; last commit 2017-02-02)
Asciinema Installation
Mit der Installation von Linuxbrew sollte die Installation von Asciinema so einfach wie ein einzelner Einzeiler sein:
brew install asciinema
Überprüfen Sie die Richtigkeit der Asciinema-Installation:
asciinema --version
asciinema 1.3.0
Aufzeichnen der Terminalsitzung
Nach all der harten Arbeit mit der Installation ist es endlich an der Zeit, etwas Spaß zu haben. Asciinema ist eine extrem einfach zu bedienende Software. Tatsächlich stehen in der aktuellen Version 1.3 nur wenige Befehlszeilenoptionen zur Verfügung
und eine davon ist --help.
Beginnen wir mit der Aufzeichnung einer Terminalsitzung mit der Option rec. Der folgende Linux-Befehl beginnt mit der Aufzeichnung Ihrer terminal
-Sitzung, woraufhin Sie die Möglichkeit haben, Ihre Aufnahme entweder zu verwerfen oder auf asciinema.org Website hochzuladen, um sie später als Referenz zu verwenden.
asciinema rec
Sobald Sie den obigen Befehl ausführen, werden Sie benachrichtigt, dass Ihre asciinema-Aufnahmesitzung gestartet wurde und dass die Aufzeichnung durch Eingabe der Tastenkombination STRG+D oder der Ausführungstaste
des Exit-Befehls gestoppt werden kann. Wenn Sie Debian/Ubuntu/Mint Linux verwenden, können Sie dies als Ihre erste Asciinema-Aufnahme ausprobieren:
su
Password:
apt install sl
exit
sl
Sobald Sie den letzten Exit-Befehl eingegeben haben, werden Sie gefragt:
exit
~ Asciicast recording finished.
~ Press <Enter> to upload, <Ctrl-C> to cancel.
https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4
Wenn Sie keine Lust haben, Ihre supergeheimen Kung-Fu-Befehlszeilenkenntnisse auf asciinema.org hochzuladen, haben Sie die Möglichkeit, die Asciinama-Aufnahme als lokale Datei im JSON-Format zu speichern. Zum Beispiel wird die
folgende asciinema-Aufzeichnung als /tmp/my_rec.json gespeichert:
asciinema rec /tmp/my_rec.json
Eine weitere äußerst nützliche Asziinem-Funktion ist die Zeitkürzung. Wenn Sie ein langsamer Schreiber sind oder vielleicht Multitasking betreiben, kann sich die Zeit zwischen der Eingabe und Ausführung Ihrer Befehle
sehr dehnen. Asciinema zeichnet Ihre Tastenanschläge in Echtzeit auf, was bedeutet, dass jede Pause, die Sie machen, die Länge Ihres resultierenden Videos widerspiegelt. Verwenden Sie die Option -w, um die Zeit zwischen
Ihren Tastenanschlägen zu verkürzen. Mit dem folgenden Linux-Befehl wird beispielsweise die Zeit zwischen den Tastenanschlägen auf 0,2 Sekunden gekürzt:
asciinema rec -w 0.2
Aufgezeichnete Terminalsitzung wiedergeben
Es gibt zwei Möglichkeiten, Ihre aufgezeichneten Terminalsitzungen wiederzugeben. Spielen Sie zunächst Ihre Terminalsitzung direkt von asciinema.org ab. Das heißt, vorausgesetzt, Sie haben Ihre Aufzeichnung zuvor auf
asciinema.org hochgeladen und Sie haben eine gültige URL:
asciinema play https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4
Alternativ können Sie Ihre lokal gespeicherte JSON-Datei verwenden:
asciinema play /tmp/my_rec.json
Verwenden Sie den Befehl wget, um Ihre zuvor hochgeladene Aufnahme herunterzuladen. Fügen Sie einfach .json zu Ihrer bestehenden URL hinzu:
wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
asciinema play steam_locomotive.json
Einbetten von Videos als HTML
Zu guter Letzt wird Asciinema auch mit einem eigenständigen JavaScript-Player geliefert. Das bedeutet, dass es einfach ist, die Aufzeichnungen Ihrer Terminalsitzungen auf Ihrer Website zu teilen. Die folgenden Zeilen veranschaulichen diese Idee mit a
einfachem index.html Code. Laden Sie zunächst alle notwendigen Teile herunter:
cd /tmp/
mkdir steam_locomotive
cd steam_locomotive/
wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.css
wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.js
Erstellen Sie als Nächstes eine neue /tmp/steam_locomotive/index.html-Datei mit folgendem Inhalt:
<html>
<head>
<link rel="stylesheet" type="text/css" href="./asciinema-player.css" />
</head>
<body>
<asciinema-player src="./steam_locomotive.json" cols="80" rows="24"></asciinema-player>
<script src="./asciinema-player.js"></script>
</body>
</html>
Wenn Sie fertig sind, öffnen Sie Ihren Webbrowser, drücken Sie STRG+O und öffnen Sie Ihre neu erstellte /tmp/steam_locomotive/index.html-Datei. Das Ergebnis sollte in etwa wie im folgenden Beispielvideo aussehen:
Schlussfolgerung
Wie bereits erwähnt, ist der Hauptvorteil für die Aufzeichnung Ihrer Terminalsitzungen mit dem Asciinema-Recorder die winzige Ausgabedatei, mit der Sie Ihre Videos extrem einfach teilen können. Das obige Beispiel
hat eine Datei mit 58 472 Zeichen erzeugt, d. h. 58 KB für eine 22-Sekunden-Videositzung. Bei der Überprüfung der ausgegebenen JSON-Datei ist selbst diese Zahl stark aufgebläht, hauptsächlich aufgrund der Tatsache, dass wir
eine Dampflokomotive gesehen haben, die über unser Terminal raste. Eine normale Terminalsitzung dieser Länge sollte eine viel kleinere Ausgabedatei erzeugen.
Wenn Sie als Nächstes eine Frage zu Ihrem Linux-Konfigurationsproblem in Foren stellen und es Ihnen schwer fällt, zu erklären, wie Sie Ihr Problem reproduzieren können, führen Sie einfach Folgendes aus:
asciinema rec
und fügen Sie die resultierende URL in Ihren Forenbeitrag ein.
Fehlerbehebung
asciinema benötigt ein UTF-8
Fehlermeldung:
asciinema needs a UTF-8 native locale to run. Check the output of `locale` command.
Lösung:
UTF-8-Gebietsschema generieren und exportieren. Zum Beispiel:
localedef -c -f UTF-8 -i en_US en_US.UTF-8
export LC_ALL=en_US.UTF-8