Advertisement
angeldp

funciones2.sh

Jun 23rd, 2015
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.13 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # funciones2.sh
  4. # Autor: angeldp
  5. #
  6. #    Script que, por medio de un menú, permitirá
  7. # A)    Saber cuántos ficheros de dispositivo tipo carácter hay
  8. # B)    Ver cuáles son y lo que ocupan los perfiles de usuario
  9. # C)    Crear un informa con esa información
  10. # El menú contemplará la posibilidad de finalización y
  11. # mostrará un mensaje indicando si se introdujo una opción
  12. # no permitida.
  13. #
  14. # Dado que las opciones B y C son iguales y sólo
  15. # cambia la salida (por pantalla o a un fichero)
  16. # crearé una función para hacerla y su salida
  17. # se redireccionará donde proceda.
  18. #
  19. #
  20. function perfiles () {
  21. # Guardo la lista de usuarios en USUARIOS
  22. USUARIOS=`cut -d":" -f1 /etc/passwd`
  23. #Muestro una cabecera para la salida
  24. echo -e "USUARIO:\t\tRuta al Perfil:\t\tTamaño:"
  25. echo -e "___________________________________________________________"
  26. # Hago un bucle para cada USUARIO
  27. for USUARIO in $USUARIOS
  28.     do
  29. # Obtengo la ruta al perfil de cada uno
  30.     HOGAR=`grep ^${USUARIO}: /etc/passwd | cut -d":" -f6`
  31. #Y el tamaño de cada perfil si existe
  32.     if [ -d $HOGAR ]
  33.        then
  34.        TAMANHO=`du -sh $HOGAR 2> /dev/null | cut -f1 `
  35.        else
  36.        TAMANHO=0
  37.     fi
  38. # Sólo queda escribir la línea:
  39.     echo -e "${USUARIO}\t\t\t${HOGAR}\t\t${TAMANHO}"
  40.     done
  41. }
  42. # FIN DE FUNCIÓN perfiles ()
  43.  
  44. OPCMENU=0  
  45. # Dentro de un bucle para que se ejecute hasta que se
  46. # pulse una q (o una Q) muestro el menú:
  47. #
  48. while [ "${OPCMENU}" != "q" ] && [ "${OPCMENU}" != "Q" ]
  49.     do
  50.     clear
  51.     echo 'Bienvenido al ejercicio del examen'
  52.     echo -e "\nIndique una de las siguientes opciones"
  53.     echo -e "\n\tA\tLe dirá el nº de ficheros de dispositivo"
  54.     echo -e "\t\ttipo carácter que hay en /dev"
  55.     echo -e "\n\tB\tLe informa sobre los perfiles de usuario"
  56.     echo -e "\n\tC\tPermite guardar esa información en un archivo"
  57.     echo -e "\nPulse q para finalizar.\n"
  58.     read -n 1 -p "Su opción: " OPCMENU
  59. #
  60. # Por medio de un case controlaré cuál fue la opción indicada
  61. #
  62.     case $OPCMENU in
  63.        "a" | "A" )
  64. # Si pulsó A contaré el número de entradas de /dev
  65. # que comienzan por "c"    (también se podría hacer
  66. # por medio del test -c fichero y un contador)
  67. #
  68.        VALOR=`ls -lAR /dev | grep ^c | wc -l`
  69.        echo -e "\n\tHay $VALOR dispositivos de tipo carácter en /dev"
  70.        read -sn 1 -p "pulse para volver al menú" BASURA;;
  71. #
  72.        "b" | "B" )
  73. #
  74. # Si pulsó B llamaré a la función que muestra
  75. # los perfiles
  76. #
  77.        perfiles
  78.        read -sn 1 -p "pulse para volver al menú" BASURA;;
  79. #
  80.        "c" | "C" )
  81. #
  82. # Si pulso C llama a la función, pero redirijo su salida a
  83. # un fichero log en Documentos e informo de ello
  84. #
  85.        perfiles > $HOME/Documentos/logexamen.log
  86.        echo "Se ha procesado la tarea"
  87.        echo "En $HOME/Documentos/logexamen.log está el resultado."
  88.        read -sn 1 -p "pulse para volver al menú" BASURA;;
  89. #
  90.        "q" | "Q" )
  91.        clear
  92.        exit;;
  93.  
  94.        * )
  95. #
  96. # Si pulsa una opción no permitida le enseño a usar un menú.
  97. #
  98.        echo "Sólo son opciones válidas 'a', 'b', 'c' o 'q'"
  99.        read -sn 1 -p "pulse para volver al menú" BASURA;;
  100.     esac
  101. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement