GNU/Linux >> Tutoriales Linux >  >> Linux

¿Captura de pantalla de la aplicación de terminal a través de un script de shell?

No creo que puedas hacer esto con screen a menos que la salida se represente realmente en una ventana, lo que probablemente anula el uso de la pantalla. Sin embargo, la ventana no tiene que estar en primer plano.

La ImageMagick suite contiene una utilidad llamada import puedes usar para esto. Si import --help te da "comando no encontrado", instala el paquete imagemagick, estará disponible en cualquier distribución de linux.

import necesita el nombre de la ventana. iftop es una interfaz de terminal, por lo que para asegurarse de usar el nombre correcto, deberá establecer el título de la terminal GUI en la que se ejecuta. La forma de hacerlo depende de la terminal GUI que use. Por ejemplo, prefiero la Terminal XFCE, que sería:

Terminal -T Iftop -e iftop

Abre una nueva terminal ejecutando iftop con el título "Iftop". Se puede tomar una captura de pantalla de eso:

import -window Iftop ss.jpg

Si va a hacer esto cada cinco segundos, probablemente quiera abrir la ventana que ejecuta un script para poder reutilizar el mismo 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 el script es "iftopSShot.sh", entonces comenzaría este Terminal -T Iftop -e iftopSShot.sh -- excepto que probablemente no estés usando Terminal . La mayoría de los terminales GUI de Linux están asociados con DE específicos, aunque son aplicaciones independientes que se pueden usar de forma independiente. Creo que el nombre de la terminal predeterminada en KDE es Konsole y sigue el -T y -e convenciones; para GNOME probablemente sea gnome-terminal (esto puede haber cambiado) y parece usar -t y no -T .

Cuidado import por defecto suena el timbre, lo que se volverá irritante, pero hay un -silent opción.


En una X entorno:

Establecer dinámicamente el título del terminal:

Desde nuestro script, una forma de cambiar el título de la terminal usando secuencias ansi:

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

Capturar un png por título de ventana:

Ahora podemos buscar la identificación de la ventana por el título exacto usando wmctrl y pasa el id al import utilidad:

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

Crear un gif:

Ejemplo para modificar, toma 5 capturas cada segundo y luego conviértelas en un gif usando convert , en un bucle infinito de 2 segundos.

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 para imprimir pirámide de Estrellas

  2. Tome una captura de pantalla a través de un script de Python en Linux

  3. ¿Cómo ejecutar un script de shell en una consola Unix o terminal Mac?

  4. Ejecutar script de shell en paralelo

  5. Ejecutar secuencia de comandos de Python a través de crontab

¿Determinar Shell en el script durante el tiempo de ejecución?

¿Tiempo de espera agotado en un script de Shell?

¿Determinar la ruta al script de Shell de origen?

¿Limpieza de la consola Shell?

¿Cómo ejecutar un comando en un script de Shell?

Ataque de script de Shell en el servidor Apache, a través de un cron de origen desconocido