GNU/Linux >> Tutoriels Linux >  >> Linux

Capture d'écran de l'application du terminal via un script shell ?

Je ne pense pas que vous serez capable de faire cela avec screen à moins que la sortie ne soit réellement rendue dans une fenêtre, ce qui va probablement à l'encontre de l'intérêt d'utiliser screen.Cependant, la fenêtre n'a pas besoin d'être au premier plan.

Le ImageMagick suite contient un utilitaire appelé import vous pouvez utiliser pour cela. Si import --help vous donne "commande introuvable", installez le package imagemagick, il sera disponible dans n'importe quelle distribution Linux.

import a besoin du nom de la fenêtre. iftop est une interface de terminal, donc pour vous assurer que vous utilisez le bon nom, vous devrez définir le titre du terminal GUI dans lequel il s'exécute. La façon dont vous procédez dépend du terminal GUI que vous utilisez. Par exemple, je préfère le terminal XFCE, qui serait :

Terminal -T Iftop -e iftop

Ouvre un nouveau terminal exécutant iftop avec le titre "Iftop". Une capture d'écran peut être prise :

import -window Iftop ss.jpg

Si vous allez faire cela toutes les cinq secondes, vous voudrez probablement plutôt ouvrir la fenêtre exécutant un script afin de pouvoir réutiliser le même terminal :

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

Si le script est "iftopSShot.sh", alors vous commencerez ce Terminal -T Iftop -e iftopSShot.sh -- sauf que vous n'utilisez probablement pas Terminal . La plupart des terminaux Linux GUI sont associés à des DE spécifiques, bien qu'il s'agisse d'applications autonomes pouvant être utilisées indépendamment. Je crois que le nom du terminal par défaut sur KDE est Konsole et il suit le -T et -e conventions; pour GNOME, c'est probablement gnome-terminal (cela peut avoir changé) et il semble utiliser -t et non -T .

Attention import par défaut sonne la cloche, ce qui deviendra irritant, mais il y a un -silent option.


Dans un X environnement :

Définissez dynamiquement le titre du terminal :

À partir de notre script, un moyen de changer le titre du terminal à l'aide de séquences ansi :

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

Capturer un png par titre de fenêtre :

Nous pouvons maintenant rechercher l'identifiant de la fenêtre par le titre exact en utilisant wmctrl et passez l'identifiant au import utilitaire :

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

Créer un gif :

Exemple pour peaufiner, prendre 5 captures toutes les secondes puis les convertir en gif en utilisant convert , dans une boucle infinie de 2 secondes.

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. Shell Script pour imprimer une pyramide d'étoiles

  2. Prendre une capture d'écran via un script Python sous Linux

  3. Exécuter un script shell en parallèle

  4. Exécuter le script Python via crontab

  5. Répertoire courant du script shell ?

Déterminer Shell dans le script pendant l'exécution ?

Déterminer le chemin d'accès au script shell sourcé ?

Effacement de la console Shell ?

Processus dans une session dans un shell interactif Vs dans un script ?

Comment exécuter une commande dans un script shell ?

Automatisez mysql_secure_installation avec la commande echo via un script shell