Actividades de scripting en BASH
En todos los scripts se debe comprobar si se está haciendo buen uso del script (número de parámetros) y mostrar una ayuda en caso contrario.
Actividades:
-
sumar-dos.sh: sumar dos números pasados por parámetro.
-
multiplicar-dos.sh: Multiplicar dos números pasados por parámetro.
-
numero-mayor-de-3.sh: comparar los tres números pasados por parámetro y devolver el mayor.
-
yo-soy.sh: mostrar tu nombre de usuario completo (recuperándolo de la variable
$USER
) en grande (configlet
). -
safedit.sh: abre el editor
vi
(onano
) con el fichero pasado como argumento, de forma que justo antes de abrirlo haga una copia de seguridad del fichero abierto en el directorio/tmp
con el nombre$$.safedit.sh
(siendo$$
la variable que contiene el PID del script).MEJORA: Si se cierra el editor sin guardar, se borra la copia de seguridad.
-
fecha-menor.sh: comparar dos fechas en formato
DD-MM-AAAA
recibidas por parámetro y devolver la fecha menor. -
menu-tres.sh: mostrar un menú que permita elegir entre los 3 primeros scripts (
sumar-dos.sh
,multiplicardos. sh
ynumero-mayor-de-3.sh
), y que pida por teclado los datos que necesitan cada uno en sus argumentos para funcionar. -
cerrar-sistema.sh: hacer el siguiente menú:
a. Cerrar la sesión b. Reiniciar el sistema c. Apagar el sistema
NOTA 1: Matar la shell usando
kill
para la primera opción y usar el comandoshutdown
para las dos últimas.NOTA 2: Al reiniciar y apagar se debe pedir por teclado el tiempo en minutos que tardará en llevarse a cabo la operación así como el mensaje de aviso a enviar a todos los usuarios que han iniciado sesión en nuestro sistema.
-
menu-instalacion.sh: hacer un menú que permite elegir entre desinstalar o instalar al menos 3 programas con
apt-get
(oapt
). Si el programa está instalado, tendrá que mostrarse la opción Desinstalar programa. Si el programa no está instalado, se mostrará la opción Instalar programa. Por ejemplo, el programacowsay
.NOTA: Averiguar cómo determinar si un programa ya está instalado en nuestro sistema, sin instalarlo.
-
instalar-amsn.sh: descargar, compilar e instalar AMSN (Alvaro’s Messenger), siguiendo los siguientes pasos:
a. Descargar el código fuente AMSN usando el comando
wget <url>
, donde url es la dirección de lo que queremos descargar:Download aMSN from SourceForge.net
b. Descomprimimos y desempaquetamos el archivo descargado (usar
gunzip
ytar
).c. Instalar los paquetes
g++
,tcl-dev
,tk-dev
,libpng++-dev
ylibjpeg8-dev
.d. Dentro del directorio descomprimido y desempaquetado (
amsn-0.98.3/
) ejecutamos./configure
.e. Compilamos el código fuente con el comando
make
.f. Instalamos el ejecutable como un comando más del sistema con
sudo make install
.g. Listo; para comprobar que funcionó nuestro script ejecutamos
amsn
. -
media-aritmetica.sh: calcule la media aritmética de dos números introducidos por teclado.
OJO Utilizar el comando
bc
para hacer el cálculo, ya que permite operar con números reales. Ejemplo:echo "2*3.14/5" | bc
-
srmd.sh: muestre la suma, la resta, la multiplicación y la división de dos números que se introducen por teclado.
-
cuadrado.sh: calcule el área de un cuadrado cuyo lado es introducido por parámetro.
-
rectangulo.sh: calcule el área de un rectángulo cuyos lados son introducidos por parámetro.
-
triangulo.sh: calcule el área de un triángulo cuya base y altura son introducidos por parámetro.
-
euro-ptas.sh: realice la conversión de euros a pesetas.
-
ptas-euros.sh: realice la conversión de pesetas a euros.
-
precio-igic.sh: pida el precio de un producto y el porcentaje de IGIC a aplicar, y que calcule el precio final.
-
descuento.sh: pida el precio de un producto y el porcentaje de descuento, y que calcule el precio final.
-
particiones.sh: muestre el espacio libre de cada partición.
-
info-fich.sh: pida por teclado el nombre de un fichero de texto y que a continuación muestre el contenido del fichero y después todos los datos del mismo (permisos, tamaño, etc.)
-
frutiversa.sh: pida 5 nombres de fruta y que luego los muestre en el orden inverso.
-
listar-hasta-100.sh: Listar los número del 1 al 100.
-
listar-rango.sh: Listar todos los números del rango comprendido entre los dos números pasados por parámetro.
-
sumar-todos.sh: Sumar todos los números pasados por parámetro y mostrar el resultado. Puede aceptar de 1 a N parámetros, pero no 0 parámetros (da error).
-
sumar-rango.sh: Sumar todos los números del rango comprendido entre los dos números pasados por parámetro, y mostrar el resultado.
-
listar-usuarios.sh: Listar los nombres de todos los usuarios del sistema (ver fichero
/etc/passwd
). -
listar-grupos.sh: Listar los nombres de todos los grupos del sistema (ver fichero
/etc/group
). -
comprobar-todos.sh: Comprobar que todos los ficheros pasados por parámetro existen y que son ficheros.
-
config-ref.sh: Mostrar la dirección IP y la máscara de subred del dispositivo o interfaz de red (lo, eth0, eth1, wlan0 wlan1, etc.) (ver comando
ifconfig
oip
).Ejemplo:
$ ./config_red.sh eth1 Configuración de la interfaz eth1: * Dirección IP: 192.168.1.33 * Máscara de subred: 255.255.255.0
NOTA: Tener en cuenta el caso particular de la interfaz
lo
. -
espacio-ocupado.sh: Calcular la cantidad de espacio total en bytes ocupado por todos los ficheros del directorio especificado por parámetro y mostrarla en la salida estándar.
Ejemplo:
$ ./espacio-ocupado.sh /home/fran 2600 bytes
-
espacio-ocupado-plus.sh: Mejorar el script anterior para que cumpla la siguiente sintaxis:
./espacio-ocupado.sh [ -b | -k | -m ] directorio(s)
Opciones:
-b
: mostrar el resultado en bytes-k
: mostrar el resultado en kilobytes-m
: mostrar el resultado en megabytesAdemás acepta 1 o más directorios y deberá devolver el total.
-
descarga-masiva.sh: Descargar, uno detrás de otro, todos los recursos especificados en un fichero de texto mediante sus URLs (ver comando “wget”).
Ejemplo:
$ cat direcciones.txt http://www.google.com http://www.iberia.es http://www.fsf.org $ ./multiwget.sh direcciones.txt Descargando http://www.google.com...ERROR Descargando http://www.iberia.es...OK Descargando http://www.fsf.org...OK Proceso completado: * Descargados: 2 * Errores: 1
-
saludar.sh: Saludar según la hora del sistema:
a. Entre las [ 6h y las 12h ): Buenos días.
b. Entre las [ 12h y las 19h ): Buenas tardes.
c. Entre las [ 19h y las 0h ): Buenas noches.
d. Entre las [ 0h y las 6h ): Vete a acostarte
-
superwrite.sh: Enviar un mensaje con
write
a todos los usuarios que han iniciado sesión en el sistema, menos a ti mismo. Por ejemplo:./superwrite "Hola a tod@s, ¿qué tal?"
-
crear-usuario.sh: Pedir todos los datos del usuario por teclado y si no existe, crearlo (ver comando
useradd
). Los datos a solicitar son nombre de usuario (username), shell (por ejemplo,/bin/bash
), contraseña (password) y nombre completo (por ejemplo, “Perico de los Palotes”, a guardar en el comentario).OJO: Se debe crear también el directorio HOME del usuario (consultar opciones de
useradd
). -
eliminar-usuario.sh: Mostrar un listado sólo con los nombres de todos los usuarios regulares del sistema (
UID >= 1000
) y al elegir uno que se elimine completamente del sistema, junto con su directorio HOME. Para elegir un usuario se especificará su UID. Debe pedir confirmación antes de eliminarlo. En caso de que no exista, mostrar un mensaje de error.