GNU/Linux >> Znalost Linux >  >> Linux

Pořídit snímek obrazovky terminálové aplikace pomocí skriptu shellu?

Nemyslím si, že to s screen zvládnete pokud se výstup ve skutečnosti nevykresluje v okně, což pravděpodobně porušuje smysl použití obrazovky. Okno však nemusí být v popředí.

ImageMagick sada obsahuje nástroj s názvem import můžete k tomu použít. Pokud import --help vám dá "příkaz nenalezen", nainstalujte si balíček imagemagick, bude dostupný v jakékoli linuxové distribuci.

import potřebuje název okna. iftop je terminálové rozhraní, takže abyste se ujistili, že používáte správný název, budete muset nastavit název terminálu GUI, ve kterém běží. Jak to uděláte, závisí na tom, který terminál GUI používáte. Například preferuji terminál XFCE, který by byl:

Terminal -T Iftop -e iftop

Otevře nový terminál se spuštěným iftop s názvem „Iftop“. Můžete pořídit snímek obrazovky:

import -window Iftop ss.jpg

Pokud to budete dělat každých pět sekund, pravděpodobně budete chtít místo toho otevřít okno se skriptem, abyste mohli znovu použít stejný terminál:

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

Pokud je skript "iftopSShot.sh", spustíte tento Terminal -T Iftop -e iftopSShot.sh -- kromě toho, že pravděpodobně nepoužíváte Terminal . Většina linuxových GUI terminálů je spojena se specifickými DE, i když se jedná o samostatné aplikace, které lze používat nezávisle. Věřím, že název výchozího terminálu v KDE je Konsole a následuje po -T a -e konvence; pro GNOME je to pravděpodobně gnome-terminal (to se mohlo změnit) a zdá se, že používá -t a ne -T .

Pozor import ve výchozím nastavení zazvoní na zvonek, což bude nepříjemné, ale je tam -silent možnost.


V X prostředí:

Nastavit dynamicky název terminálu:

Z našeho skriptu, způsob, jak změnit název terminálu pomocí ansi sekvencí:

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

Vyfotit png podle názvu okna:

Nyní můžeme vyhledat ID okna podle přesného názvu pomocí wmctrl a předejte id do import nástroj:

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

Vytvořte gif:

Příklad pro vyladění, každou sekundu pořiďte 5 snímků a poté je převeďte na gif pomocí convert v nekonečné 2sekundové smyčce.

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. Časový limit ve skriptu Shell?

  2. Je terminál Gnome typem prostředí bez přihlášení?

  3. Význam $? Ve skriptu Shell?

  1. Shell Script pro tisk pyramidy hvězd

  2. Udělejte snímek obrazovky pomocí skriptu Python v systému Linux

  3. Spusťte skript Python přes crontab

  1. Aktuální adresář skriptu Shell?

  2. Automatizujte mysql_secure_installation pomocí příkazu echo pomocí skriptu shellu

  3. Útok skriptu Shell na server Apache prostřednictvím cronu neznámého původu