Ir al contenido
  • 0
mirror25

script usuarios

Pregunta

Hola a tod@s, estoy realizando un script y necesito algo de ayuda. 
El script debe hacer lo siguiente:

1. Pedir que se introduzca el usuario.
2. Comprobar si existe en /etc/passwd, si existe, informar del error y volver al punto 1.

Por ahora tengo hecho parte del script, pero no sé como decirle que compruebe si existe y volver a preguntar de nuevo.
Muchas gracias! 

#!/bin/bash
while true; 
do
read -p "¿Quiere introducir un usuario? (s/N): " sn
case $sn in
[Ss]* ) read -p "Introduzca el usuario: " usuario;; 
[Nn]* ) exit;;
esac
done
if [ grep -qi "^$USUARIO:" /etc/passwd ]

Compartir este post


Enlace al post
Compartir en otros sitios

10 respuestas a esta pregunta

Recommended Posts

  • 0

Necesitas la comprobacion mediate sintaxis de comando - los script no son más que tareas de comandos programadas en ejecucion.

Lo que tienes que hacer es buscar un simil a if then en script volcarlo en el código en la parte que quieras que - si existe - entonces pregunta tal - y de ally sales a seguri las otras tareas.

 

If then else.

 

 

Compartir este post


Enlace al post
Compartir en otros sitios
  • 0
hace 21 minutos, mirror25 dijo:

He probado poniendo el if pero me da error de sintaxis. El if que he puesto al final del script, es correcto?

Gracias.

El if es un si condicional, osea, algo así

 

si "esto=x" entonces "lo otro"

if  [ "esto" = "x" ]
then
	lo otro
fi

Si después del then que es el entonces añades un else, significa "si no"

if  [ "esto" = "x" ]
then
    lo otro
else
	otra cosa distinta
fi

Ahora no te puedo ayudar con el guión pero quizás con esto y usando un poco algún buscador puedas sacarlo por ti mismo.

Compartir este post


Enlace al post
Compartir en otros sitios
  • 0

Yo diría que has puesto la primera parte de la comparativa.

If ALGO debe compararse con OTRO, de forma que sea igual, menor, mayor, existe o no existe, etc... Con grep estas buscando una expresión en el fichero /etc/passwd. El resultado deberías guardarlo en una variable, por ejemplo ALGO, luego el usuario introducido es el que comparas con "$ALGO"

if [ "$ALGO" = "$USUARIO"]

then

echo "Usuario existe"

else

echo "Usuario No existe"

fi

A mi solo me da resultado grep si lo ejecuto sin las opciones que pones, así grep "pepetops" /etc/passwd tengo una línea de resultado, con tu línea no tengo nada. En este caso el if más resolutivo sería el siguiente:

ALGO="$(grep "$usuario" /etc/passwd)"

if [ -z "$ALGO" ]

then

echo "ALGO está vacío"

else

echo "ALGO tiene algo escrito"

fi

 

 

 

 

 

Compartir este post


Enlace al post
Compartir en otros sitios
  • 0
hace 7 horas, Pepetops dijo:

Yo diría que has puesto la primera parte de la comparativa.

If ALGO debe compararse con OTRO, de forma que sea igual, menor, mayor, existe o no existe, etc... Con grep estas buscando una expresión en el fichero /etc/passwd. El resultado deberías guardarlo en una variable, por ejemplo ALGO, luego el usuario introducido es el que comparas con "$ALGO"

if [ "$ALGO" = "$USUARIO"]

then

echo "Usuario existe"

else

echo "Usuario No existe"

fi

A mi solo me da resultado grep si lo ejecuto sin las opciones que pones, así grep "pepetops" /etc/passwd tengo una línea de resultado, con tu línea no tengo nada. En este caso el if más resolutivo sería el siguiente:

ALGO="$(grep "$usuario" /etc/passwd)"

if [ -z "$ALGO" ]

then

echo "ALGO está vacío"

else

echo "ALGO tiene algo escrito"

fi

 

 

 

 

 

Perdona mi pobre conocimiento...pero no lo acabo de entender. Esta parte del script donde debo colocarla. Me da error de sintaxis...

 

 

 

 

Compartir este post


Enlace al post
Compartir en otros sitios
  • 0

Es este:

 

#!/bin/bash

if [ -d /var/log/folder ];
then
echo "La carpeta folder ya existe."
else
mkdir /var/log/folder
fi
while true; 
do
    read -p "¿Quiere introducir un usuario? (s/N): " sn
    case $sn in
        [Ss]* )  read -p "Introduzca el usuario: " usuario;; 
        [Nn]* ) exit;;

    esac
done

cat /etc/passwd | grep "$1" > /dev/null && exist=0 || exist=1
if [ $exist -eq 0 ]
then
echo El usuario existe : 
cat /etc/passwd | grep "$1" | cut -d ':' -f 6
else
echo El usuario "$1" no existe
fi

 

 

 

El script que tengo que crear es el siguiente:

  1. Comprobar si la carpeta / var / log / folder existe, en caso negativo, crearla. (ya está hecho)

  2. Preguntar si se quiere introducir un usuario. En caso negativo, finalizar.

  3. Pedir un nombre de usuario.

  4. Comprobar si este usuario ya está dado de alta (buscando en / etc / passwd), en caso de que exista volver al punto 2 (informando del error).

  5. Pedir un grupo donde incluirlo.

  6. Comprobar si este grupo existe (buscando en / etc / group).

  7. Si el grupo no existe, crearlo y añadirlo al archivo / var / log / folder / groups el nombre del grupo creado.

  8. Crear el usuario indicado en el punto 3 asignándole al grupo introducido en el punto 5 y añadir al archivo / var / log / folder / users el nombre del usuario creado.

  9. Volver al punto 2.

 

La verdad que esto de ir volviendo a otro punto del script es bastante complicado, por lo menos para mi...

 

Gracias por tu paciencia ;)

 

 

 

 

Compartir este post


Enlace al post
Compartir en otros sitios
  • 0



Es este:
 
#!/bin/bash
if [ -d /var/log/folder ];
then
echo "La carpeta folder ya existe."
else
mkdir /var/log/folder
fi
while true; 
do
    read -p "¿Quiere introducir un usuario? (s/N): " sn
    case $sn in
        [ss]* )  read -p "Introduzca el usuario: " usuario;; 
        [Nn]* ) exit;;
    esac
done
cat /etc/passwd | grep "$1" > /dev/null && exist=0 || exist=1
if [ $exist -eq 0 ]
then
echo El usuario existe : 
cat /etc/passwd | grep "$1" | cut -d ':' -f 6
else
echo El usuario "$1" no existe
fi
 
 
 
El script que tengo que crear es el siguiente:
  1. Comprobar si la carpeta / var / log / folder existe, en caso negativo, crearla. (ya está hecho)
  2. Preguntar si se quiere introducir un usuario. En caso negativo, finalizar.
  3. Pedir un nombre de usuario.
  4. Comprobar si este usuario ya está dado de alta (buscando en / etc / passwd), en caso de que exista volver al punto 2 (informando del error).
  5. Pedir un grupo donde incluirlo.
  6. Comprobar si este grupo existe (buscando en / etc / group).
  7. Si el grupo no existe, crearlo y añadirlo al archivo / var / log / folder / groups el nombre del grupo creado.
  8. Crear el usuario indicado en el punto 3 asignándole al grupo introducido en el punto 5 y añadir al archivo / var / log / folder / users el nombre del usuario creado.
  9. Volver al punto 2.
 
La verdad que esto de ir volviendo a otro punto del script es bastante complicado, por lo menos para mi...
 
Gracias por tu paciencia 
 
 
 
 


Hay varias cosas de tu script que no entiendo... Porqué usas $1 cuando tienes ya una variable declarada y con su valor?
Si quieres repetir las cosas según valor del if-else este if-else ha de estar dentro del bucle while true...
Tienes que trabajar más el script, o lo que es lo mismo, has de leer más sobre bash y sus comandos...
Si es un trabajo, de poco te sirve que te lo demos masticado, has de currartelo un poquito...

Compartir este post


Enlace al post
Compartir en otros sitios
  • 0

Hola de nuevo, después de darle vueltas al script, por fin he conseguido comprobar si el usuario existe.

Pero como le digo que vuelva a preguntar otra vez en el caso de que ya exista? Si pongo un break después de <echo "Ya existe" > me da error, y si pongo un exit sale por completo del script. También he probado de poner un while true después de <echo -n "¿Quiere introducir un usuario? (s/N): "; read respuesta> pero tampoco funciona.

 

El objetivo del script es preguntar por un nombre de usuario, si este no existe, después crearlo. Pero si ya existe preguntar por otro nombre.

Gracias.

 

#!/bin/bash
echo -n "¿Quiere introducir un usuario? (s/N): "; read respuesta

 if [ $respuesta = 's' ]; then
   echo "Introduzca el usuario: "
    read USUARIO
    if grep -qi "^$USUARIO:" /etc/passwd 
    then 
    echo "Ya existe" 
    else 
    echo "No existe" 
    fi 
 elif
     [ $respuesta = 'N' ]; then
 exit 
fi

 

 

Compartir este post


Enlace al post
Compartir en otros sitios
  • 0
hace 17 horas, mirror25 dijo:

Hola de nuevo, después de darle vueltas al script, por fin he conseguido comprobar si el usuario existe.

Pero como le digo que vuelva a preguntar otra vez en el caso de que ya exista? Si pongo un break después de <echo "Ya existe" > me da error, y si pongo un exit sale por completo del script. También he probado de poner un while true después de <echo -n "¿Quiere introducir un usuario? (s/N): "; read respuesta> pero tampoco funciona.

 

El objetivo del script es preguntar por un nombre de usuario, si este no existe, después crearlo. Pero si ya existe preguntar por otro nombre.

Gracias.

 

#!/bin/bash
echo -n "¿Quiere introducir un usuario? (s/N): "; read respuesta

 if [ $respuesta = 's' ]; then
   echo "Introduzca el usuario: "
    read USUARIO
    if grep -qi "^$USUARIO:" /etc/passwd 
    then 
    echo "Ya existe" 
    else 
    echo "No existe" 
    fi 
 elif
     [ $respuesta = 'N' ]; then
 exit 
fi

 

 

Aquí hay un guión que hace lo que pides, pero recuerda que solo el usuario administrador puede añadir usuarios al sistema.

Compartir este post


Enlace al post
Compartir en otros sitios

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder esta pregunta...

×   Has incluido contenido con formato.   Eliminar formato

  Sólo se permiten 75 emoticonos como máximo.

×   Tu enlace ha sido insertado automáticamente.   Deshacer y mostrar como enlace

×   Su contenido anterior ha sido restaurado.   Limpiar editor

×   No puedes pegar imágenes directamente. Súbelas a algún hosting de imágenes y pega la dirección URL


×
×
  • Crear Nuevo...