Universidad Técnica de Ambato
Facultad de Ingeniería en Sistemas,Electrónica e Industrial
Comunicaciones Avanzadas
Programación en Bash
Scripts Bash
Integrantes: Carlos Orozco
Profesor: Ing. Santiago Manzano
Fecha de realización: 19 de mayo de 2021
Fecha de entrega: 19 de mayo de 2021
Ambato, Ecuador
Índice de Contenidos i
Índice de Contenidos
1. Objetivos 1
1.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Desarrollo 2
2.1. Captura de pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2. Archivo de respaldos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3. Memoria del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4. Usuarios conectados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5. Configurarción ip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3. Conclusiones 13
Referencias 14
Índice de Figuras
1. Instalacion scrot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Código scripts captura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Habilitamos permisos al archivo screem.sh . . . . . . . . . . . . . . . . . . . . . . . . . 2
4. Configuración del crontab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5. Archivo Capturado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
6. Capturas en CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
7. Configuración del crontab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
8. Concedemos permisos al archivo backup.sh . . . . . . . . . . . . . . . . . . . . . . . . 4
9. Configuración del crontab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
10. Respaldos Generados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
11. Archivo descomprimido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
12. Carpeta de los respaldos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
13. Código memoria del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
14. Aplicación de permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
15. Configuración Crontab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
16. Carpeta de archivo generado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
17. Ejecucion del archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
18. Ejecución del comando w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
19. Ejecución del comando sar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
20. Código del script usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
21. Ubicación de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
22. Archivo de usuarios.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
23. Código del script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
24. Ejecución del script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
25. Opción 0 Automatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
26. ip add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Programación en Bash Noveno "A"
Índice de Figuras ii
27. Opción 1 Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
28. ip add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Programación en Bash Noveno "A"
Objetivos 1
1. Objetivos
1.1. Objetivo General
• Desarrollar scripts utilizando el lenguaje bash en Linux que permita programar tareas con el
comando crontab.
1.2. Objetivos Específicos
• Desarrollar un script que permita obtener la captura de pantalla en Linux a cada minuto.
• Desarrollar un script que permita obtener un respaldo de archivos de texto en Linux cada
minuto.
• Desarrollar un script que permita cambiar la ip de manera manual y automática de una maquina
Linux.
Programación en Bash Noveno "A"
Desarrollo 2
2. Desarrollo
2.1. Captura de pantalla
Para poder captura la pantalla de Linux, lo podemos realizar de varias maneras, ya sea de consola
o mediante guide. El comando a utilizar para esta práctica se utilizó el comando scrot.
Instalación de Scrot en Linux
Para poder instalar en una maquina Linux ejecutamos el siguiente comando: yum install scrot
Figura 1: Instalacion scrot
Después de la instalación ya podemos capturar la pantalla de nuestra máquina de Linux, con el
siguiente comando : scrot
Código del script
Cree un archivo screen.sh con el comando vi y agregue el siguiente contenido. Se programo en
bash, utilizando el comando scrot, en cual se coloca el nombre del archivo con las fecha y hora, para
después guardarlo en la carpeta que deseemos guardar.
Figura 2: Código scripts captura
Ahora concedemos el permiso 777 y configure un trabajo Cron.
Figura 3: Habilitamos permisos al archivo screem.sh
Abra un archivo crontab y agregue la siguiente entrada.
Figura 4: Configuración del crontab
Programación en Bash Noveno "A"
Desarrollo 3
La entrada de Cron anterior se ejecutará cada "10"minutos y tomará capturas de pantalla y las
almacenará en el directorio /home/Orozco/Pictures/ con el nombre de archivo como fecha y hora.
Figura 5: Archivo Capturado
También podemos visualizar las imágenes capturadas en la interfaz guide de CentOS.
Figura 6: Capturas en CentOS
2.2. Archivo de respaldos
Para poder realizar respaldos en RedHat utilizaremos el comando tar , para lo cual lo instalaremos
con el siguiente comando: yum install tar tar-doc.
Después de esto ya podemos realizar nuestros respaldos, para lo cual utilizaremos el siguiente
comando:
Programación en Bash Noveno "A"
Desarrollo 4
Código del script
A continuación, se muestra el script desarrollar el cual permite sacar una copia de respaldos de
documentos con extensión “.docx”.
Figura 7: Configuración del crontab
1. La primera línea es la llamada shebang, encargada de compartir con el sistema operativo el
intérprete que ha de usarse. En este caso concreto, se usa bash.
2. Obtenemos la fecha y hora para poder identificar cada copia de seguridad. Las variables mues-
tran, por ejemplo, el formato año-mes-día-horaminutosegundo.
3. Colocamos como queremos que se llame nuestra copia de seguridad.
4. Acceder a la carpeta a respaldar.
5. La línea del script contiene el comando tar: cf crea un archivo tar (-c), se comprime con gzip
(-z), y todo se envía al siguiente archivo (-f). Además, se agrega la extension .docx.
6. Y por último colocamos la ruta a guardar.
Ahora concedemos el permiso 777 y configure un trabajo Cron.
Figura 8: Concedemos permisos al archivo backup.sh
Abra un archivo crontab y agregue la siguiente entrada.
Figura 9: Configuración del crontab
La entrada de Cron anterior se ejecutará cada "10"minutos y realizara copias de seguridad y las
almacenará en el directorio /home/Orozco/Downloads/ con el nombre de archivo como fecha y hora.
Programación en Bash Noveno "A"
Desarrollo 5
Figura 10: Respaldos Generados
Para poder ver que documentos contiene nuestro respaldo comprimido , podemos ver con el
comando: tar -xvf
Figura 11: Archivo descomprimido
También podemos ver los respaldos creados desde la interfaz gráfica de CentOS.
Programación en Bash Noveno "A"
Desarrollo 6
Figura 12: Carpeta de los respaldos
2.3. Memoria del sistema
Para poder consultar los procesos que estamos realizando en la máquina de Linux lo realizaremos
con el comando ps aux.
Instalacion de ps en Linux
Realizamos el siguiente paso: sudo yum -y install sysstat
Una vez instalado “sysstat”, se creará el servicio con el mismo nombre, que debemos añadir al
inicio: systemctl enable sysstat , systemctl start sysstat
Despues podemos ver algunos ejemplos, el primero el uso más básico, que nos muestre información
del sistema cada 2 segundos hasta cinco veces: ps aux
Código del script
A Continuación se muestra el código del script realizado :
Figura 13: Código memoria del sistema
1. La primera línea es la llamada shebang, encargada de compartir con el sistema operativo el
Programación en Bash Noveno "A"
Desarrollo 7
intérprete que ha de usarse. En este caso concreto, se usa bash.
2. Ejecutamos en comando ps aux para obtener el reporte en tiempo real y después lo guardaos
en un archivo txt.
Ahora concedemos el permiso 777 y configure un trabajo Cron.
Figura 14: Aplicación de permisos
Abra un archivo crontab y agregue la siguiente entrada.
Figura 15: Configuración Crontab
La entrada de Cron anterior se ejecutará cada "10"minutos y tomará reportes de los procesos
realizados en tiempo real y las almacenará en el directorio /home/Orozco / con el nombre de memo-
ria.txt.
Figura 16: Carpeta de archivo generado
El archivo generado se guardara en el escritorio principal con el nombre : memoria.txt
Para poder ver el archivo, la abrimos con el comando: vi memoria.txt
Programación en Bash Noveno "A"
Desarrollo 8
Figura 17: Ejecucion del archivo
Para poder ver el archivo, la abrimos con el comando: vi memoria.txt
2.4. Usuarios conectados
Para poder ver los usuarios en Linux, ocuparemos dos comandos el cual nos permitirán obtener
información del número de usuarios y actividades que realizan.
Comando w: Muestra información sobre los usuarios que están conectados a la computadora y
además indica los procesos correspondientes de cada uno, el parámetro CPU revela el tiempo total
de procesador usado por todos los procesos.
Programación en Bash Noveno "A"
Desarrollo 9
Figura 18: Ejecución del comando w
El otro comando a utilizar es : sar 2 5
Figura 19: Ejecución del comando sar
Código del script
En la imagen se presenta el código desarrollado en el lenguaje bash.
1. La primera línea es la llamada shebang, encargada de compartir con el sistema operativo el
intérprete que ha de usarse. En este caso concreto, se usa bash.
2. Ejecutamos el comando w y sar los cuales nos generan reportes del sistema en tiempo real.
Estos reportes se guardan en el archivo usuarios.txt
3. Impresión de finalización del proceso.
Figura 20: Código del script usuarios
El archivo generado se guardará en el escritorio principal con el nombre: usuarios.txt
Programación en Bash Noveno "A"
Desarrollo 10
Figura 21: Ubicación de archivo
Abrimos el archivo y verificamos su información.
En la imagen se presenta los reportes obtenidos de los usuarios con sus diferentes procesos en
tiempo real.
Para lo cual abrimos el archivo usuarios.txt con el comando vi.
Figura 22: Archivo de usuarios.txt
2.5. Configurarción ip
A continuación se presenta el código del programa desarrollado , para lo cual se creo un archivo
.sh en cual tenemos 2 opciones de configuración:
Programación en Bash Noveno "A"
Desarrollo 11
• 0 para configuración ip automática
• 1 para configuración ip manual
Figura 23: Código del script
1. Mostramos un mensaje al usuario para que decida si desea configurar de manera manual o
automática de la dirección ip.
2. Si escogemos 0 la maquina tomara una dirección ip automáticamente por medio de adaptador
puente. Para lo cual se realizo una copia de seguridad de la configuración de red para poder copiarlo
cuando se seleccione de manera automática.
3. Si escogemos 1 tendremos que asignarle una dirección ip ,con son Gateway y dns .Para asignarlo
ocupamos el comando nmcli con se ve en el código.
Corremos el programa y tenemos dos opciones :
Figura 24: Ejecución del script
Si escogemos 0 la maquina tomara una ip automáticamente.
Programación en Bash Noveno "A"
Desarrollo 12
Figura 25: Opción 0 Automatica
Para verificar la dirección ip ejecutamos los siguiente:
Figura 26: ip add
Si escogemos 1 la maquina tomara una ip manual. aquí debemos ingresar la dirección ip con su
mascara , Gateway y su dns.
Figura 27: Opción 1 Manual
Para verificar la dirección ip ejecutamos los siguiente:
Figura 28: ip add
Programación en Bash Noveno "A"
Conclusiones 13
3. Conclusiones
• Para poder capturar la pantalla, Linux nos ofrece muchos comandos que poder ocupar para dicha
actividad, entre los cuales podemos encontrar los siguientes: scrot, ImageMagick , Shutter Gnome.
Para esta práctica ocupamos el comando scrot, permitiéndonos capturar la pantalla de CentOS.
• En la programación de los diferentes scripts presentados se utilizaron el lenguaje bash y el len-
guaje de programación C , el cual nos permitió programas la tareas utilizando sentencias condicionales
de lenguaje C.
• El desarrollo de los scripts se la realizo en la máquina de CentOS , pero también se puede
utilizar redhat con los mismos comandos presentados anteriormente.
Programación en Bash Noveno "A"
Referencias 14
Referencias
[1] Scrot. Scrot: una herramienta de línea de comandos para tomar capturas de pantalla de escritorio
/ servidor automáticamente en Linux
https://es.linux-console.net/?p=1826#:~:text=Instalaci%C3%B3n%20de%20Scrot%20en%
20Linux,como%20se%20muestra%20a%20continuaci%C3%B3n.
[2] Digital Guide. Programa de archivo tar: creación de backups y archivado de ficheros
https://www.ionos.es/digitalguide/servidores/herramientas/programa-de-archivo-tar-como-
crear-backups-en-linux/
[3] Linux Console. 3 maneras de establecer una dirección IP estática en RHEL 8
https://es.linux-console.net/?p=148
[4] Reportes Linux. Monitorización de procesos en Linux .
https://www.uaeh.edu.mx/scige/boletin/huejutla/n11/p2.html
Programación en Bash Noveno "A"