educatica!

educación, informática y demás

GNU/Linux bash, Informática, Shell scripts, Sistemas operativos

Bash shell scripts, ejemplos 27 de febrero

Vamos a realizar una serie de scripts muy simples en los que nos vamos a centrar en los comandos de bash que debemos ejecutar para llevar a cabo una función muy específica.

Una vez tengamos resuelto el script para un caso muy concreto, la idea es modificar ese script para adaptarlo a casos más generales de forma que pueda ser reutilizado fácilmente por el administrador para realizar tareas más elaboradas.

mkBackup.sh

Crea un script llamado mkBackup.sh que realice una copia de seguridad del directorio personal del usuario marinpg en el directorio /backup/2020/marinapg.

Por supuesto, al tratarse de una copia de seguridad de ficheros de un usuario, se deben mantener los permisos, propietario y grupo de los ficheros copiados en el directorio destino.

Una vez realizada la copia de seguridad, mostrará un resumen de ocupación del directorio personal de marinapg y después del directorio recién copiado.

showFileSystems.sh

Crea un script llamqado showFilesystems.sh que muestre los sistemas de ficheros que estén montados en el sistema. Solo deberá mostrar los sistemas de ficheros montados que provengan de ficheros de dispositivos SATA/SCSI/USB.

Además, una vez mostradas las líneas de información de puntos de montaje, deberás mostrar la ocupación en disco de los sistemas de ficheros montados en el sistema con un formato comprensible por humanos, pero solo de los sistemas de ficheros que estén en ficheros de dispositivos.

arrangeDocs.sh

Crea un script llamado arrangeDocs.sh que organice los ficheros que están en el direcotorio personal del usuario actual. Para ello, creará los directorios docs, images, videos y audio en el directorio myFiles dentro del directorio personal del usuario actual.

Una vez creados los directorios, movera todos los ficheros con extensión txt, pdf y odt al directorio docs que estará dentro del directorio myFiles en el directorio personal del usuario actual.

Después, movera todos los ficheros con extensión jpg, png y gif al directorio images que estará dentro del directorio myFiles en el directorio personal del usuario actual.

Después, movera todos los ficheros con extensión avi, mp4 y mpg al directorio videos que estará dentro del directorio myFiles en el directorio personal del usuario actual.

Después, movera todos los ficheros con extensión wav, mp3 y ogg al directorio audio que estará dentro del directorio myFiles en el directorio personal del usuario actual.

Una vez movidos todos los ficheros, mostrará información sobre los ficheros que se encuentran en cada uno de los directorios con etiquetas. La información a mostrar para cada uno de los directorios será:

  • Etiqueta con el tipo de ficheros: docs, images, videos o audio.
  • Listado de ficheros del tipo concreto.
  • Número de ficheros contenidos y resumen de ocupación del directorio en disco en un formato comprensible por humanos.

showErrors.sh

Crea un script llamado showErrors.sh que muestre las 20 últimas líneas de error del fichero /var/log/syslog. Se considerarán líneas de error aquellas en las que aparezca la cadena de texto «error», sin importar si las letras están en mayúsculas o minúsculas.

showNoComments.sh

Crea un script llamado showNoComments.sh que muestre el contenido del fichero /etc/fstab sin líneas de comentario.

Se considera que una línea es una línea de comentarios si empieza por el caracter #.

function log ()

Crea un script llamado log.sh cuyo contenido será una función llamada log que recibirá dos parámetros, el tipo de mensaje y el mensaje de log.

En el primer parámetro, la función de log, recibirá el tipo de mensaje de log. Los tipos más comunes son ERROR, WARNING o INFO, aunque permitirá cualquier tipo de valor.

El segundo parámetro será un mensaje que proporcionará información.

La función de log almacenará una línea de información en el fichero infoLog.log en el directorio actual. Esta línea estará compuesta por los siguinetes campos:

  • Fecha actual en formato dia/mes/año
  • Hora actual en formato hora:minutos
  • Tipo de mensaje de log. Lo ha recibido en el primer parámetro
  • Mensaje de log. Cadena de texto recibida en el segundo parámetro.

Como separador de campos utiliza el caracter «;».

Para comprobar que funciona, el script log.sh deberá llamar, al menos una vez, a la función log pasándo parámetros. Por último, mostrará el contenido del fichero de log, infoLog.log.

Deja un comentario

Tema creado por Anders Norén