Explorar el Código

Parser de los comandos funcionando

Guzmán Castanedo Villalba hace 6 años
padre
commit
3ec56996cc
Se han modificado 1 ficheros con 96 adiciones y 17 borrados
  1. 96 17
      userspanel.sh

+ 96 - 17
userspanel.sh

@@ -12,7 +12,8 @@ fi
 }
 
 function mostrarBienvenida {
-printf "$(basename $0) 0.1 Beta\n"
+#Version y ayuda.
+printf "$(basename $0) $VERSION\n"
 printf "Escribir \"ayuda\" o \"help\" para obtener ayuda de los comandos\n\n"
 }
 
@@ -21,8 +22,61 @@ function leerComando {
 	printf "$(basename $0)>\t"
 	read Comando
 	#printf "\n"
-	#parser: Comando = Opcion + Opciones + Argumentos
-	Opcion=$Comando
+	#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 {	
@@ -30,17 +84,44 @@ function leerComando {
 #}
 
 function ayuda {
-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"
+#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
@@ -64,7 +145,7 @@ while [ $cont = true ]; do
 			;;
 		ayuda|help)
 			#Ayuda de comandos
-			ayuda
+			ayuda $User
 			;;
 		salir|s|S|quit|q|Q|exit)
 			#Salida
@@ -74,11 +155,9 @@ while [ $cont = true ]; do
 		*)
 			#Opcion Incorrecta
 			printf "Error de Sintaxis: Comando no valido.\n"
-			#error=true
-			#continue
 			;;
 	esac
-	#error=false
+	unset Opcion User homeDir gid otherGroups createHome password shell force remove expireDate
 done
-
+unset VERSION cont
 exit