GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Screenshot der Terminalanwendung über Shell-Skript erfassen?

Ich glaube nicht, dass Sie dies mit screen tun können es sei denn, die Ausgabe wird tatsächlich in einem Fenster gerendert, was wahrscheinlich den Zweck der Verwendung von screen zunichte macht. Das Fenster muss jedoch nicht im Vordergrund sein.

Die ImageMagick suite enthält ein Dienstprogramm namens import kannst du dafür verwenden. Wenn import --help gibt Ihnen "Befehl nicht gefunden", installieren Sie das Paket imagemagick, es wird in jeder Linux-Distribution verfügbar sein.

import benötigt den Namen des Fensters. iftop ist eine Terminalschnittstelle. Um sicherzustellen, dass Sie den richtigen Namen verwenden, müssen Sie den Titel des GUI-Terminals festlegen, in dem es ausgeführt wird. Wie Sie das tun, hängt davon ab, welches GUI-Terminal Sie verwenden. Zum Beispiel bevorzuge ich das XFCE-Terminal, das wäre:

Terminal -T Iftop -e iftop

Öffnet ein neues Terminal mit iftop mit dem Titel "Iftop". Ein Screenshot davon kann gemacht werden:

import -window Iftop ss.jpg

Wenn Sie dies alle fünf Sekunden tun, möchten Sie wahrscheinlich stattdessen das Fenster öffnen, in dem ein Skript ausgeführt wird, damit Sie dasselbe Terminal wiederverwenden können:

count=0;
while ((1)); do
    iftop &
    pid=$!
    sleep 1  # make sure iftop is up
    count=$(($count+1))
    import -window Iftop iftop_sshot$count.jpg
    kill $pid
    sleep 5
done

Wenn das Skript "iftopSShot.sh" ist, dann würden Sie diesen Terminal -T Iftop -e iftopSShot.sh starten -- außer Sie verwenden wahrscheinlich nicht Terminal . Die meisten Linux-GUI-Terminals sind mit bestimmten DEs verbunden, obwohl es sich um eigenständige Anwendungen handelt, die unabhängig verwendet werden können. Ich glaube, der Name des Standardterminals auf KDE ist Konsole und es folgt dem -T und -e Konventionen; für GNOME ist es wahrscheinlich gnome-terminal (dies kann sich geändert haben) und es scheint -t zu verwenden und nicht -T .

Achtung import standardmäßig klingelt die Glocke, was irritierend wird, aber es gibt einen -silent Option.


In einem X Umgebung:

Den Terminaltitel dynamisch festlegen:

Aus unserem Skript eine Möglichkeit, den Titel des Terminals mithilfe von Ansi-Sequenzen zu ändern:

echo -e "\033]0;Term | myApp\007";

Erfassen Sie ein PNG nach Fenstertitel:

Jetzt können wir mit wmctrl anhand des genauen Titels nach der Fenster-ID suchen und übergeben Sie die ID an import Dienstprogramm:

import -window $(wmctrl -l | grep -i 'Term | myApp' | awk '{print $1}') ~/Pictures/capture.png

Gif erstellen:

Beispiel zum Optimieren, nehmen Sie jede Sekunde 5 Aufnahmen und konvertieren Sie sie dann mit convert in ein GIF , in einer Endlosschleife von 2 Sekunden.

rm -f /tmp/*png && for i in {1..5}; do import -window $(wmctrl -l | grep -i 'Term | myApp' | awk '{print $1}') /tmp/$i.png && sleep 1; done && convert -delay 200 -loop 0 /tmp/*.png animation.gif

Linux
  1. Wie führe ich ein Shell-Skript auf einer Unix-Konsole oder einem Mac-Terminal aus?

  2. Shell-Skript parallel ausführen

  3. Führen Sie das Python-Skript über crontab aus

  4. Aktuelles Verzeichnis des Shell-Skripts?

  5. Führen Sie ein Shell-Skript im neuen Terminal vom aktuellen Terminal aus

Zeitüberschreitung in einem Shell-Skript?

Ist Gnome Terminal eine Art Non-Login-Shell?

Löschen der Shell-Konsole?

Wie führe ich einen Befehl in einem Shell-Skript aus?

Shell-Skript-Angriff auf den Apache-Server über einen Cron unbekannter Herkunft

Unterschied zwischen Befehlen im Bash-Skript und Befehlen im Terminal