123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- #!/bin/bash
- #Guzmán Castanedo (guzman@castanedo.es) Octubre 2017
- #Licencia: GPL3 (http://www.gnu.org/licenses/gpl-3.0.html)
- function comprobarPrivilegios {
- #Comprobar si somos root.
- if [ $(id -u) -ne 0 ]; then
- #No somos root
- printf "\tERROR: No es posible obtener permisos de root.\n"
- exit 1
- fi
- }
- function mostrarBienvenida {
- #Version y ayuda.
- printf "$(basename $0) $VERSION\n"
- printf "Escribir \"ayuda\" o \"help\" para obtener ayuda de los comandos\n\n"
- }
- function leerComando {
- #Muestrar linea de comando y capturar comando.
- printf "$(basename $0)>\t"
- read Comando
- #printf "\n"
- #Parseamos la linea de comando con todas las opciones posibles.
- printf "$Comando\n"
- Temp=$(getopt -q -o d:g:G:mp:s:fre: -l --home-dir:,--gid:,--groups:,--create-home,--pasword:,--shell:,--force,--remove,--expiredate: -- $Comando)
- eval set -- "$Temp"
- printf "$Temp\n"
- while true; do
- case "$1" in
- -d|--home-dir)
- homeDir=$2
- shift 2
- ;;
- -g|--gid)
- gid=$2
- shift 2
- ;;
- -G|--groups)
- otherGroups=$2
- shift 2
- ;;
- -m|--create-home)
- createHome=true
- shift
- ;;
- -p|--password)
- password=$2
- shift
- ;;
- -s|--shell)
- shell=$2
- shift
- ;;
- -f|--force)
- force=true
- ;;
- -r|--remove)
- remove=true
- ;;
- -e|--expiredate)
- expireDate=$2
- shift 2
- ;;
- --)
- shift
- break
- ;;
- *)
- printf "ERROR: Error Interno (parser).\n"
- exit 1
- ;;
- esac
- done
- Opcion=$1
- User=$2
- printf "Opcion: $Opcion\tUsuario: $User\n"
- unset Comando Temp
- }
- #function altaUsuario {
- #
- #}
- function ayuda {
- #Muestra la ayuda dependiendo del caso en el que estemos.
- printf "ayuda $1\n"
- case "$1" in
- alta)
- printf "alta: Dar de ALTA un nuevo usuario\n"
- ;;
- cambiar)
- printf "cambiar: CAMBIAR contraseña de un usuario:\n"
- ;;
- baja)
- printf "baja: Dar de BAJA un usuario\n"
- ;;
- bloquear)
- printf "bloquear: BLOQUEAR un usuario\n"
- ;;
- desbloquear)
- printf "desbloquear: DESBLOQUEAR un usuario\n"
- ;;
- ""|ayuda|help)
- printf "Comandos:\n"
- printf "> alta\t\tDar de ALTA un nuevo usuario\n"
- printf "> cambiar\tCAMBIAR contraseña de un usuario\n"
- printf "> baja\t\tDar de BAJA un usuario\n"
- printf "> bloquear\tBLOQUEAR un usuario\n"
- printf "> desbloquear\tDESBLOQUEAR un usuario\n"
- printf "> ayuda\t\tMuestra esta ayuda\n"
- printf "\t\tPara mas ayuda escribir \"ayuda [comando]\"\n"
- printf "> salir\t\tFinaliza programa\n"
- ;;
- *)
- printf "Error: el comando $1 no existe.\n"
- #printf "Escriba \"ayuda\" o \"help\" ver los posibles comandos.\n"
- ayuda
- ;;
- esac
- }
- VERSION="0.1 Beta"
- comprobarPrivilegios
- mostrarBienvenida
- cont=true
- while [ $cont = true ]; do
- leerComando
- case $Opcion in
- alta)
- #Alta usuario
- ;;
- cambiar)
- #Cambiar passwd
- ;;
- baja)
- #Baja usuario
- ;;
- bloquear)
- #Bloquear usuario
- ;;
- desbloquear)
- #Desbloquear usuario
- ;;
- ayuda|help)
- #Ayuda de comandos
- ayuda $User
- ;;
- salir|s|S|quit|q|Q|exit)
- #Salida
- #Podreamos hacer break, pero los bucles infinitos son feos.
- cont=false
- ;;
- *)
- #Opcion Incorrecta
- printf "Error de Sintaxis: Comando no valido.\n"
- ;;
- esac
- unset Opcion User homeDir gid otherGroups createHome password shell force remove expireDate
- done
- unset VERSION cont
- exit
|