Ejercicios de Scripts Deooñ
Ejercicios de Scripts Deooñ
Ejercicios de Scripts Deooñ
Actividades
Actividades ............................................................................................................................... 1
Procedimientos o scripts en Linux ......................................................................................... 2
Actividad 1. Pruebas sencillas con procedimientos ......................................................... 3
Actividad 2. Creación de scripts ...................................................................................... 9
Actividad 3. Creación de scripts .................................................................................... 10
Actividad 4. Creación de scripts .................................................................................... 11
Actividad 5. Creación de scripts .................................................................................... 12
Actividad 6. Creación de scripts .................................................................................... 13
Actividad 7. Creación de scripts .................................................................................... 15
Actividad 8. Creación de scripts .................................................................................... 17
Actividad 9. Creación de scripts .................................................................................... 18
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
if [ -d /home/user1/prueba02 ]
then
echo Directorio
fi
if [ -r /home/user1/prueba02 ]
then
echo Legible
fi
if [ -w /home/user1/prueba02 ]
then
echo Modificable
fi
if [ -x /home/user1/prueba02 ]
then
echo Ejecutable
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
fi
5. El siguiente script indica el número de argumentos recibidos y los enumera. Luego muestra
los tres primeros. Introduce en el archivo prueba_entorno el código y ejecútalo, teniendo en
cuenta que:
• $# indica el número de argumentos recibidos por el script
• $* es la lista de todos los argumentos
• $1, $2, … representan cada uno de los argumentos recibidos
echo El número de variables es $#
mkdir $1
ERR=$?
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
if [ $ERR -ne 0 ]
then
echo No se ha podido crear el directorio
exit
fi
else
echo Número de argumentos erróneo
fi
8. El siguiente script comprueba si los dos únicos usuarios conectados al ordenador son los
usuarios root y usuario1. Introduce en el archivo prueba_usuarios el código y ejecútalo,
teniendo en cuenta que:
• ´xxx´ Las comillas invertidas provocan que se ejecuta el comando encerrado
• -a es la operación lógica ógica y (and)
• -o es la operación lógica ógica o (or)
• expr hace que se ejecuta una expresión aritmética
USUARIOS=`users`
CUENTA=0
for USUARIO in $USUARIOS
do
CUENTA=`expr $CUENTA + 1`
if [ $CUENTA -eq 1 ]; then USUARIO1=$USUARIO; fi
if [ $CUENTA -eq 2 ]; then USUARIO2=$USUARIO; fi
done
if [ $CUENTA -eq 2 ]
then
if [ $USUARIO1=root -a $USUARIO2=usuario1 -o \
$USUARIO1=usuario1 -a $USUARIO2=root ]
then
echo Los únicos usuarios son root y usuario1
fi
else
echo Hay menos o más de dos usuarios
fi
9. El siguiente script comprueba que el archivo pasado como argumento existe en el directorio
actual. Introduce en el archivo prueba_comprobar el código y ejecutalo, teniendo en cuenta
que:
• ! niega un valor
if [ ! $# -eq 1 ]
then
echo Número de argumentos erroneo
exit 1
fi
VAL=1
while [ $VAL -lt 11 ]
do
touch fich$VAL
VAL=`expr $VAL + 1`
done
10. El siguiente script muestra en pantalla el número de argumentos recibidos. Introduce en el
archivo prueba_case el código y ejecutalo:
case $# in
1 )
echo El número de argumentos recibidos es uno.
;;
2 )
echo El número de argumentos recibidos es dos.
;;
3 )
echo El número de argumentos recibidos es tres.
;;
Esac
11. El siguiente script traduce comando en español a ingles. Introduce en el archivo
prueba_case2 el código y ejecutalo:
case $# in
1 )
case $1 in
listado )
ls
;;
directorioactual )
pwd
;;
esac
;;
2 )
case $1 in
listado )
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
ls $2
;;
abrir )
cd $2
;;
visualizar )
cat $2
;;
esac
;;
3 )
case $1 in
copiar )
cp $2 $3
;;
mover )
mv $2 $3
;;
esac
;;
esac
12. El comando printf se utiliza en los scripts para imprimir (es una especie de versión
avanzada de echo). El primer parámetro es la cadena formateada a imprimir, y los
restantes parámetros son valores a introducir en los huecos de la cadena formateada.
Introduce en el archivo prueba_printf el código y ejecútalo, teniendo en cuenta que:
• \n indica un salto de línea
• %i es un argumento de tipo entero
• %s es un argumento de tipo texto
printf “Cadena sin argumentos\n”
printf “Este ciclo tiene %i cursos\n”, 2
printf “El usuario actual es %s\n“, $LOGNAME
13. El siguiente código es el contenido del archivo /etc/profile, que se ejecuta cada vez que un
usuario inicia una sesión. Estúdialo:
# /etc/profile
PATH="$PATH:/usr/X11R6/bin"
USER=`id -un`
LOGNAME=$USER
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
for i in /etc/profile.d/*.sh ; do
if [ -x $i ]; then
. $i
fi
done
unset i
14. EL archivo $HOME/.profile se ejecuta cuando el usuario correspondiente inicia una sesión,
es decir, es el conjunto de operaciones que ejecutan cuando el usuario inicia una sesión,
sería el perfil. Estudia el script.
# .bash_profile
PATH=$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME=""
clear
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
#Comprobar argumentos
if [ $# -ne 2 ]; then
echo "Error: Número de argumentos erroneo"
echo "Uso: buscar directorio archivo"
exit 1
fi
DIRECTORIO=$1
FICHERO=$2
#Inicializamos variables
LINEAS=`cat /etc/hosts`
CONTADOR=1
#Recuperamos el argumento
DIRECTORIO=$1
#Ficheros legibles
CABECERA="SI"
for FICHERO in `ls $DIRECTORIO`; do
if [ -r $DIRECTORIO/$FICHERO ]; then
#Imprimimos la cabecera si es necesario
if [ $CABECERA = "SI" ]; then
CABECERA="NO"
echo "Los ficheros legibles son:"
fi
#Ficheros modificables
CABECERA="SI"
for FICHERO in `ls $DIRECTORIO`; do
if [ -w $DIRECTORIO/$FICHERO ]; then
#Imprimimos la cabecera si es necesario
if [ $CABECERA = "SI" ]; then
CABECERA="NO"
echo "Los ficheros modificables son:"
fi
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
#Ficheros ejecutables
CABECERA="SI"
for FICHERO in `ls $DIRECTORIO`; do
if [ -x $DIRECTORIO/$FICHERO ]; then
#Imprimimos la cabecera si es necesario
if [ $CABECERA = "SI" ]; then
CABECERA="NO"
echo "Los ficheros ejecutables son:"
fi
#Comprobar argumentos
if [ $# -gt 1 ]; then
echo Error: Número de argumentos erroneo
echo Uso: CrearCopia [directorio]
exit 1
fi
#Mensaje de fin
echo Copia de seguridad realizada: $NOMBRE_FICHERO.gz
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
#Limpiamos la pantalla
clear
#Comprobar argumentos
if [$# -eq 0 –o $# -gt 2 ]; then
echo "Error: Número de argumentos erroneo"
echo "Uso: Nuevo_usuario usuario [grupo]"
exit 100
fi
#Creamos el usuario
if [ $# -eq 1 ]; then
/usr/sbin/adduser $NOMBRE_USUARIO 2>/dev/null
else
NOMBRE_GRUPO=$2
/usr/sbin/adduser $NOMBRE_USUARIO -g $NOMBRE_GRUPO \
2>/dev/null
fi
#Comprobar errores
ERROR=$?
case $ERROR in
9 ) #El usuario ya existe
echo "Error: El usuario $NOMBRE_USUARIO ya existe"
exit 9
;;
6 ) #El grupo no existe
echo "Error: El grupo $NOMBRE_GRUPO no existe"
exit 6
;;
1 ) #No se puede bloquear el fichero de claves
echo "Error: No se puede bloquear el fichero de claves"
exit 1
;;
0 )
Diseño de aplicaciones informáticas.
Sistemas operativos multiusuario y en red.
if [ $# -eq 1 ]; then
echo "El usuario $NOMBRE_USUARIO ha sido creado"
else
echo "El usuario $NOMBRE_USUARIO ha sido creado \
en el grupo" $NOMBRE_GRUPO
fi
;;
esac