Professional Documents
Culture Documents
1) Escribir un script (while.sh) que muestre una lista de números del 1 al 10 usando un
blucle while. Hacer lo mismo, con un bucle for. (for.sh)
while.sh
for.sh
#!/bin/bash
i=0
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
2) Hacer un script que muestre información sobre los parámetros del programa.
(params.sh)
#!/bin/bash
3) Crear una librería (lib.sh) que contenga tres funciones para mostrar un mensaje
recibido como parámetro. A continuación se muestran los detalles de estas funciones:
read op
case "$op" in
;;
;;
esac
if [ -f $1 ]
then
`rm $1`
elif [ -d $1 ]
then
`rm -r $1`
fi
2) Hacer un script que reciba como parámetro el nombre de un archivo y muestre si existe
o no, y los permisos que el usuario que ejecuta el script tiene sobre él (permisos.sh). NOTA: se
puede saber usando la orden TEST.
#!/bin/bash
if [ $# -eq 1 ]
then
if [ -f $1 ]
then
if [ -w $@ ]
then
fi
if [ -x $@ ]
then
fi
if [ -r $@ ]
then
fi
else
fi
else
fi
#Non fago uso da librería , pero se se quixese incluir pos .nome_librería na parte darriba do
script
4) Escribir un script que permita elegir entre 3 opciones: ver un listado del directorio
actual, mostrar los usuarios conectados o salir del programa.
#!/bin/bash
read opcion
if echo $opcion | grep -Eq '^ $' || [ "$opcion" -eq 1 ] || [ "$opcion" -eq 2 ] || [ "$opcion" -eq
3]
then
case $opcion in
1) ls ;;
2) who ;;
3) exit 0 ;;
esac
fi
5) Hacer un script que haga una copia de seguridad (tar -czf) de la carpeta personal del
usuario que ejecuta el script, y guarda el resultado en la carpeta /tmp , con el nombre de
archivo (fecha)_backup.tar.gz
#!/bin/bash
Instalar el servidor de correo “mutt”, en caso de que no esté ya instalado. Ver el manual para el
envío de correos con ficheros adjuntos, y enviar un script que hayáis hecho a vuestro correo.
6) Escribir un script que muestre los permisos de los archivos y directorios pasados como
parámetro. Posteriormente, mostrar otro listado con el tamaño que ocupan en caso de ser
archivos (que sea legible, en KB, MB, etc.)
#!/bin/bash
if [ $# -eq 1 ]
then
if [ -f $1 ]
then
if [ -w $@ ]
then
fi
if [ -x $@ ]
then
fi
if [ -r $@ ]
then
fi
else
fi
else
fi
- tipo usuarios
#!/bin/bash
if [ $# -ge 2 ]
then
if [ "$1" = "-tipo" ]
then
while [ $# -ne 0 ]
do
shift
if [ "$1" = "usuarios" ]
then
cat /etc/passwd
else
if [ "$1" = "contraseña" ]
then
if [ `whoami` = "root" ]
then
cat /etc/shadow
else
fi
fi
fi
done
fi
fi
# Solución cutre xD , supoño que ten que haber outra maneira mellor de facelo xD, peo
funciona xD
b. Los nombres seguidos del ID (separados por una coma) de todos los usuarios.
c. Lo mismo que en el punto “a.”, pero sólo para aquellos usuarios que tengan en home su
directorio personal
d. Mostrar los nombres de todos los usuarios separados con un espacio (el salto de línea
se puede especificar con el caracter \n)
#!/bin/bash
echo "Agora vai aparecer un menu.Se ves que tal introduce unha opcion ou pulsa 3
para sair"
echo "A )Mostrar nomes de todolos usuarios do sistema e gardalos en usuarios.txt"
echo "B) Os nomes seguidos do ID (separados por unha coma ) de tódolos usuarios
"
echo "C) idem que no primeiro caso pero so para aqueles usuarios que teñan home
no seu directorio particular"
echo "D) Mostrar o nome de tódolos usuarios separados por un espacio en blanco "
read op
case $op in
A|a) cat /etc/passwd | cut -d ":" -f 1 | tee usuarios.txt ;;
B|b) cat /etc/passwd | cut -d ":" -f 1,3 --output-delimiter=",";;
C|c) cat /etc/passwd | cut -d ":" -f 6 | grep "/home/" |cat ;;
D|d) cat /etc/passwd | cut -d ":" -f 1 | paste -s | tr '/n' ' ' ;;
3) exit 0;;
*)echo "Opcion incorrecta";;
esac
11) Usando el fichero datos.txt, obtener:
b. Todas las líneas que contengan la palabra “atun”, con dos o más n.
12) Mostrar todos los procesos que no estén asociados a ningún terminal (procesos TTY es
“?”). Mostrar únicamente el ID del proceso, y guardarlo en un fichero de nombre procesos.txt
13) Mostrar un listado de todos los usuarios regulares del sistema (aquellos cuyo ID
empieza a partir de 1000), e indicar si están o no conectados.
14) Escribir un scritp (chat.sh) que permita establecer una charla interna (en el mismo
servidor) de dos usuarios conectados a través de terminales. Se especificará un nombre de
usuario, el programa detectará si está o no conectado, y en caso de estarlo comenzará la
charla, enviando los mensajes a los dispositivos especiales /dev/ptsX. Usar los comandos: who,
echo, cut, grep, tr.Grado de dificultad: ALTA, os va a llevar varias horas de trabajo,
seguramente).