Linux/Unix Shell Scripting - Script para dar de alta a un Usuario (Ubuntu)

   
Vista:

Script para dar de alta a un Usuario (Ubuntu)

Publicado por Daniguitar (1 intervención) el 21/05/2009 12:29:38
Hola a todos me surge una duda sobre el siguiente script que acabo de crear en el cual se muestra un menú y al dar la opción 1 te pide por consola el nombre de un usuario y este en teoría va al archivo passwd de etc.
Mi problema es que no se guarda y que además passwd es un fichero, no un directorio .
Os pongo el script y si alguien me puede echar una mano lo agradezco mucho:

#!/bin/sh

TITULO="Menu"

opcion1="1. Dar de alta un usuario "

opcion9="9. Salir "
function opcionmala()
{
MSG="Opcion erronea, vuelva a introducir una opcion"
}
###################################################################
function metodo1()
{ echo escribe nombre de usuario
read usuario
useradd -c $usuario -d /etc/passwd/$usuario
#read DUMMY
}
###################################################################
function metodo9()
{ salir="1"
}
function mostrarmenu()
{ clear

echo `date`

echo ""

echo $TITULO

echo ""

echo Elige Opcion:

echo ""

echo $opcion1

echo $opcion9

echo ""

echo $MSG

echo ""

echo Seleccione una opcion
}
mostrarmenu
read option
while [ "$option" != "9" ]
do
case $option in
1 ) metodo1
;;
9 ) metodo9
;;
esac
mostrarmenu
read option
done
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Script para dar de alta a un Usuario (Ubuntu)

Publicado por Manu (3 intervenciones) el 23/05/2009 17:46:04
Bueh compi, me has hecho llorar de alegría, por fin alguien que lo intenta por su cuenta antes de pedir ayuda y que no se lo den todo hecho.

Sigue así.

Este te lo regalo, la solución, en el script, todo lo que no conozcas, tira de man o google (para los HoWTo), no creo que te arrepientas ^^. Modifícalo a tu gusto, si es para un trabajo de clase te recomiendo que lo modifiques pues más gente podría copiar el código literal y ya sabemos todos lo que pasa si te pillan copiando...

Por supuesto esta es una solución entre muchas, se puede hacer de un montón de formas distintas eso que estas intentando (es la magia de la shell).

Por cierto, no estoy seguro que no contenga ningún error de sintaxis, pero eso ya lo depuras tú por tu cuenta ;)

-----------------------------------------------------------------

#!/bin/bash

# Definimos la funcion de alta de usuarios para posteriormente llamarla desde un case

alta_usuario()
{

echo
echo "Introduzca nombre usuario: "; read USER
EXISTE=`cat /etc/passwd | awk -F':' '{print $1}' | egrep -x ${USER}`

if [ ${#EXISTE} -ne 0 ]
then
echo "Ese usuario ya existe en el sistema. Pulse intro para continuar..."; read
return
fi

echo "Introduzca nombre grupo para el usuario: "; read GROUP
EXISTE=`cat /etc/group | awk -F':' '{print $1}' | egrep -x ${GROUP}`

if [ ${#EXISTE} -eq 0 ]
then
echo "Ese grupo no existe en el sistema. Pulse intro para continuar..."; read
return
fi

GUID=`cat /etc/group | awk -F':' '{print $3}' | egrep -x ${GROUP}`

useradd -m -g ${GUID} -d /home/${USER} -s /bin/bash ${USER}

EXISTE=`cat /etc/passwd | awk -F':' '{print $1}' | egrep -x ${USER}`

if [ ${#EXISTE} -ne 0 ]
then
echo "Usuario dado de alta correctamente en el sistema. Pulse intro para continuar..."; read
else
echo "Se ha producido un error al dar de alta el usuario. Pulse intro para continuar..."; read
fi

return

}

### MAIN ###

# Comprobamos que el script se ejeuta con usuario root

if [ `whoami` != "root" ]
then
echo
echo "El alta de usuarios en el sistema precisa privilegios de superusuario (root)"
echo
exit 1
fi

# Construimos el menu dentro de un bucle de forma que lo repinte cuando sea necesario

while [ true ]
do
clear
echo
echo "Menu alta de usuarios"
echo "---------------------"
echo "1.- Dar de alta usuario"
echo "9.- Salir"
echo
echo "Seleccione opcion y pulse intro: "; read OPC

# Vamos a currarnos un case lo mas limpito posible

case ${OPC} in
1)
alta_usuario
continue
;;

9)
break
;;

*)
echo "Opcion erronea, pulse intro para continuar..."; read
continue
;;
esac

done

exit 0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

UN ERROR

Publicado por Manu (3 intervenciones) el 23/05/2009 17:52:02
Sustituye:

GUID=`cat /etc/group | awk -F':' '{print $3}' | egrep -x ${GROUP}`

Por:

GUID=`cat /etc/group | egrep ${GROUP} | awk -F':' '{print $3}' | head -1`

Perdón, es que con la resaca estoy un poco en la parra xD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar