userspanel.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #!/bin/bash
  2. #Guzmán Castanedo (guzman@castanedo.es) Octubre 2017
  3. #Licencia: GPL3 (http://www.gnu.org/licenses/gpl-3.0.html)
  4. function comprobarPrivilegios {
  5. #Comprobar si somos root.
  6. if [ $(id -u) -ne 0 ]; then
  7. #No somos root
  8. printf "\tERROR: No es posible obtener permisos de root.\n"
  9. exit 1
  10. fi
  11. }
  12. function mostrarBienvenida {
  13. #Version y ayuda.
  14. printf "$(basename $0) $VERSION\n"
  15. printf "Escribir \"ayuda\" o \"help\" para obtener ayuda de los comandos\n\n"
  16. }
  17. function leerComando {
  18. #Muestrar linea de comando y capturar comando.
  19. printf "$(basename $0)>\t"
  20. read Comando
  21. #printf "\n"
  22. #Parseamos la linea de comando con todas las opciones posibles.
  23. printf "$Comando\n"
  24. Temp=$(getopt -q -o d:g:G:mp:s:fre: -l --home-dir:,--gid:,--groups:,--create-home,--pasword:,--shell:,--force,--remove,--expiredate: -- $Comando)
  25. eval set -- "$Temp"
  26. printf "$Temp\n"
  27. while true; do
  28. case "$1" in
  29. -d|--home-dir)
  30. homeDir=$2
  31. shift 2
  32. ;;
  33. -g|--gid)
  34. gid=$2
  35. shift 2
  36. ;;
  37. -G|--groups)
  38. otherGroups=$2
  39. shift 2
  40. ;;
  41. -m|--create-home)
  42. createHome=true
  43. shift
  44. ;;
  45. -p|--password)
  46. password=$2
  47. shift
  48. ;;
  49. -s|--shell)
  50. shell=$2
  51. shift
  52. ;;
  53. -f|--force)
  54. force=true
  55. ;;
  56. -r|--remove)
  57. remove=true
  58. ;;
  59. -e|--expiredate)
  60. expireDate=$2
  61. shift 2
  62. ;;
  63. --)
  64. shift
  65. break
  66. ;;
  67. *)
  68. printf "ERROR: Error Interno (parser).\n"
  69. exit 1
  70. ;;
  71. esac
  72. done
  73. Opcion=$1
  74. User=$2
  75. printf "Opcion: $Opcion\tUsuario: $User\n"
  76. unset Comando Temp
  77. }
  78. #function altaUsuario {
  79. #
  80. #}
  81. function ayuda {
  82. #Muestra la ayuda dependiendo del caso en el que estemos.
  83. printf "ayuda $1\n"
  84. case "$1" in
  85. alta)
  86. printf "alta: Dar de ALTA un nuevo usuario\n"
  87. ;;
  88. cambiar)
  89. printf "cambiar: CAMBIAR contraseña de un usuario:\n"
  90. ;;
  91. baja)
  92. printf "baja: Dar de BAJA un usuario\n"
  93. ;;
  94. bloquear)
  95. printf "bloquear: BLOQUEAR un usuario\n"
  96. ;;
  97. desbloquear)
  98. printf "desbloquear: DESBLOQUEAR un usuario\n"
  99. ;;
  100. ""|ayuda|help)
  101. printf "Comandos:\n"
  102. printf "> alta\t\tDar de ALTA un nuevo usuario\n"
  103. printf "> cambiar\tCAMBIAR contraseña de un usuario\n"
  104. printf "> baja\t\tDar de BAJA un usuario\n"
  105. printf "> bloquear\tBLOQUEAR un usuario\n"
  106. printf "> desbloquear\tDESBLOQUEAR un usuario\n"
  107. printf "> ayuda\t\tMuestra esta ayuda\n"
  108. printf "\t\tPara mas ayuda escribir \"ayuda [comando]\"\n"
  109. printf "> salir\t\tFinaliza programa\n"
  110. ;;
  111. *)
  112. printf "Error: el comando $1 no existe.\n"
  113. #printf "Escriba \"ayuda\" o \"help\" ver los posibles comandos.\n"
  114. ayuda
  115. ;;
  116. esac
  117. }
  118. VERSION="0.1 Beta"
  119. comprobarPrivilegios
  120. mostrarBienvenida
  121. cont=true
  122. while [ $cont = true ]; do
  123. leerComando
  124. case $Opcion in
  125. alta)
  126. #Alta usuario
  127. ;;
  128. cambiar)
  129. #Cambiar passwd
  130. ;;
  131. baja)
  132. #Baja usuario
  133. ;;
  134. bloquear)
  135. #Bloquear usuario
  136. ;;
  137. desbloquear)
  138. #Desbloquear usuario
  139. ;;
  140. ayuda|help)
  141. #Ayuda de comandos
  142. ayuda $User
  143. ;;
  144. salir|s|S|quit|q|Q|exit)
  145. #Salida
  146. #Podreamos hacer break, pero los bucles infinitos son feos.
  147. cont=false
  148. ;;
  149. *)
  150. #Opcion Incorrecta
  151. printf "Error de Sintaxis: Comando no valido.\n"
  152. ;;
  153. esac
  154. unset Opcion User homeDir gid otherGroups createHome password shell force remove expireDate
  155. done
  156. unset VERSION cont
  157. exit