elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [AYUDA] Shell-Script
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] Shell-Script  (Leído 3,411 veces)
syncro_7

Desconectado Desconectado

Mensajes: 21


Ver Perfil
[AYUDA] Shell-Script
« en: 10 Octubre 2015, 20:29 pm »

Hola a todos, estoy empezando en el maravilloso mundo del Shell-Script y ya me he encontrado con el primer obstáculo. El problema es el siguiente:
Verifica que existe usuario e informa de su directorio de trabajo, UID, grupo y  shell. Cada dato en una línea y si no existe el usuario se informa de que "No existe"

Para ejecutarlo seria: ./existe usuario1 --> Y que me mostrase el contenido
Sino existe dicho usuario que me muestre el "Usuario no existe en el sistema"
Creo que el fallo está en la línea 4 pero es que no sé como acceder a /etc/passwd y verificar si el usuario existe.

Mi SHELL-SCRIPT
Código
  1. #! /bin/bash
  2. ##Existencia del usuario
  3.  
  4. if [ $1 -eq /etc/passwd ];then
  5.        usuario=$(grep "$1" /etc/passwd | cut -d ":" -f 1)
  6.        uid=$(grep "$1" /etc/passwd | cut -d ":" -f 3);
  7.        grupo=$(grep "$1" /etc/passwd | cut -d ":" -f 4);
  8.        shell=$(grep "$1" /etc/passwd | cut -d ":" -f 7);
  9.        ##Ahora hago los echo
  10.        echo "El usuario es $usuario"
  11.        echo "El uid es $uid"
  12.        echo "El grupo es $grupo"
  13.        echo "La shell en la que trabaja es $shell"
  14. else
  15.        echo "El usuario no existe en el sistema"
  16. fi
  17. exit;
  18.  
  19.  


En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [AYUDA] Shell-Script
« Respuesta #1 en: 10 Octubre 2015, 20:42 pm »

esa comparacion no es correcta, si grep no devuelve nada entonces ya sabes que el usuario no existe
con la variable $? diferente de cero bash te muestra si tuvo un problema ejecutando el comando asi que:

prueba eso
Código
  1. grep "$1" /etc/passwd
  2. if [ "$?" == "0" ]; then
  3. echo "aca va el proceso"
  4. else
  5. echo "no existe el usuario"
  6. fi


En línea

buenas
syncro_7

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: [AYUDA] Shell-Script
« Respuesta #2 en: 10 Octubre 2015, 21:01 pm »

Gracias por la respuesta daryo. Ya me ha funcionado, así lo tenía yo antes escrito, pero estoy buscando otra posible solución ¿Sabéis como hacerlo de otra manera?
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [AYUDA] Shell-Script
« Respuesta #3 en: 10 Octubre 2015, 21:34 pm »

Gracias por la respuesta daryo. Ya me ha funcionado, así lo tenía yo antes escrito, pero estoy buscando otra posible solución ¿Sabéis como hacerlo de otra manera?

una forma seria que si la variable usuario esta vacia entonces no muestras nada
Código
  1. if [ -n "$usuario" ];then
  2. echo el usuario existe
  3. else
  4. echo el usuario no existe
  5. fi



otra  alternativa con el incomprensible awk
Código
  1. #!/bin/bash
  2. while read linea          
  3. do
  4. echo $linea | awk  -v r=$1 'BEGIN{FS=":";}{if($1==r){print "usuario: "$1"\nuid: "$3"\ngrupo: "$4"\nshell: "$7;}}'  
  5. done < /etc/passwd

voy recorriendo cada linea  y se guarda en la varaible linea
dentro de awk que es en si otro lenguaje de programacion le digo que separe los elementos con el simbolo :
Código
  1. BEGIN{FS=":";}

le digo que dentro de awk "r" va a ser la variable que nos envio el usuario
 
hago un if si el usuario $1 (el que esta en passwd ) es igual a  el usuario que estoy buscando "r" que que lo muestre
Código
  1. if($1==r)
  2. {
  3. print "usuario: "$1"\n uid: "$3"\n grupo: "$4"\n shell: "$7
  4. }

algo exagerado pero si quisiera que me saliera "no existe el usuario"

Código
  1. #!/bin/bash
  2. while read linea      
  3. do
  4. var=$(echo $linea | awk  -v r=$1 'BEGIN{FS=":";}{if($1==r){print "usuario: "$1"\nuid: "$3"\ngrupo: "$4"\nshell: "$7;}}' )
  5. if [ -n "$var" ];then
  6.   break
  7. fi
  8. done < /etc/passwd
  9. if [ -n "$var" ];then
  10.     echo $var
  11. else
  12.    echo "no existe el usuario"
  13. fi
« Última modificación: 10 Octubre 2015, 22:07 pm por daryo » En línea

buenas
syncro_7

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: [AYUDA] Shell-Script
« Respuesta #4 en: 10 Octubre 2015, 22:20 pm »

El primer código no me ha salido, he estado haciendo pruebas con usuarios reales y no me da resultado, sólo me da que el "usuario no existe". De mi código tengo que cambiar el

Código
  1. if [ "$?" == "0" ]; then

Tengo que hacerlo de otra manera, pero lo del awk es muy complicado y no lo he dado en clase, mi profesor dice que hay otra manera que no es con el "$?" pero no lo logro, muchas gracias por estar ahí ayúndandome, si te se ocurre algo, seguiré mirando el post.  ¡Muchas gracias crack!
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [AYUDA] Shell-Script
« Respuesta #5 en: 10 Octubre 2015, 22:41 pm »

umm pues como te decia y si miras si la variable usuario esta vacia?
Código
  1. #! /bin/bash
  2. ##Existencia del usuario
  3. usuario=$(grep "$1" /etc/passwd | cut -d ":" -f 1)
  4. if [ -n "$usuario" ];then
  5.  
  6.        uid=$(grep "$1" /etc/passwd | cut -d ":" -f 3);
  7.        grupo=$(grep "$1" /etc/passwd | cut -d ":" -f 4);
  8.        shell=$(grep "$1" /etc/passwd | cut -d ":" -f 7);
  9.        ##Ahora hago los echo
  10.        echo "El usuario es $usuario"
  11.        echo "El uid es $uid"
  12.        echo "El grupo es $grupo"
  13.        echo "La shell en la que trabaja es $shell"
  14. else
  15.        echo "El usuario no existe en el sistema"
  16. fi
  17. exit;
  18.  
En línea

buenas
syncro_7

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: [AYUDA] Shell-Script
« Respuesta #6 en: 12 Octubre 2015, 14:24 pm »

Hola Dayro, te he dejado una parte del código que no lo entiendo bien por MP. Te lo dejo escrito por aquí. Esta parte del código no la entiendo, no entiendo que hace

Código
  1. if [ -n "$usuario" ];then

Muchas gracias crack por tener paciencia y ayudar a un nobato como yo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda script shell
Scripting
unnatural 2 2,582 Último mensaje 29 Noviembre 2007, 18:48 pm
por unnatural
[shell script] ayuda con script, :( « 1 2 »
Scripting
dark_fidodido 14 11,376 Último mensaje 16 Septiembre 2009, 10:28 am
por dark_fidodido
Ayuda con Shell remota via web o Script remoto
Nivel Web
a 2 4,928 Último mensaje 23 Marzo 2010, 14:53 pm
por a
Ayuda shell script basico
Scripting
juancaa 2 3,326 Último mensaje 27 Enero 2012, 14:11 pm
por risto
Necesito ayuda en shell script linux
Scripting
cnxi 1 3,760 Último mensaje 15 Diciembre 2011, 01:44 am
por leogtz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines