Error en script y dudas sobre grep.

Iniciado por Vehlore, 9 Junio 2015, 20:45 PM

0 Miembros y 1 Visitante están viendo este tema.

Vehlore

Muy buenas a todos, soy nuevo en esta comunidad y me he registrado porque veo que hay mucho entendido de scripting.  :D

La cuestión es que estoy iniciándome en esto de scriptear y me parece entretenido y bastante interesante, por lo que me he metido con algunos ejercicios básicos para coger carrerilla. Aquí viene el quid de la cuestión, tengo dos ejercicios, en uno de ellos tengo que realizar un script que cree un usuario con su correspondiente grupo, contraseña y shell, cosa que he conseguido. Este es el resultado:

Código (bash) [Seleccionar]
#!/bin/bash

while [ continuar=S ]
do

read -p "Introduce el nombre de usuario a crear: " usuario
if [ -z $usuario ]
then
echo "No se ha introducido ningun nombre de usuario, terminando tarea."
sleep 3s; exit
else
if [ `grep -o "^$usuario" /etc/passwd` -n 0 ]
then
echo "Usuario introducido y creado correctamente."
useradd $usuario
else
echo "El usuario ya existe en el sistema, terminando tarea."
sleep 3s; exit
fi
fi
read -p "Introduce el nombre del grupo al que pertenecera el usuario: " grupo
if [ -z $grupo ]
then
echo "No se ha introducido un grupo, se ha asignado a $usuario al grupo 'users'."
usermod -g users $usuario
else
if [ `grep -o "^$grupo" /etc/group` -n 0 ]
then
echo "Grupo creado y asignado correctamente."
groupadd $grupo
usermod -g $grupo $usuario
else
echo "Se ha asignado a $usuario al grupo $grupo."
usermod -g $grupo $usuario
fi

        fi
read -p "Introduce la shell que utilizara el usuario: "
if [ -z $shell ]
then
echo "No se ha introducido una shell, se ha asignado al usuario la shell '/bin/bash'."
usermod -s /bin/bash $usuario
else
echo "Se ha asignado al usuario la shell $shell."
usermod -s $shell $usuario
fi
read -p "Introduce la password para el usuario: " password
if [ -z $password ]
then
echo "No se ha introducido ninguna password, el usuario estara bloqueado hasta que se le asigne una."
else
echo "Password de usuario creada correctamente."
usermod -p `mkpasswd -m sha-512 $password` $usuario
fi
read -p "¿Continuar agregando usuarios? S/N: " continuar

done


Hasta aquí todo perfecto, el script funciona perfectamente y sin errores, hasta que llega al final del script y el bucle while no se aplica. Es decir, lo que pretendo es que al llegar al final, el usuario responda a una pregunta con S o N y que en caso de ser S el script vuelva al inicio. Supongo que hay algo mal en el comando o en las variables que he puesto, pero no logro encontrar el fallo.  :-\

Por otro lado, en el segundo ejercicio me piden lo siguiente:

Citar
Crear un script que reciba un parámetro, que será un fichero de texto con varias líneas  dentro de él y cada una de las líneas con dos campos separados por coma: un usuario y un grupo. El script debe comprobar línea por línea si el usuario existe en el sistema (y si existe indicarlo) y en caso contrario, crearlo e introducirlo en el grupo indicado a su lado. Además, debe comprobar que se ingresa el parámetro inicial (el nombre del fichero) y que el parámetro indicado existe en el sistema.

Había pensado usando comando grep y algún que otro read con condiciones para los casos en los que encuentre o no el usuario, pero me lío y no sé por donde empezar.

Agradezco de antemano la ayuda que me podáis aportar, gracias  ;D