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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?  (Leído 5,306 veces)
slyfx

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« en: 14 Marzo 2014, 02:43 am »

Código:
#!/bin/bash

archivousers="usuarios.csv"
IFS=$'\n'

if [! -f "$archivousers" ]
then
echo "No se ha encontrado el archivo $archivousers"
else
#Crearemos los usuarios mediante un array si se ha encontrado el archivo

grupos=(`cut -d, -f 3 "$archivousers" | sed 's/ //'`)
nombrecompleto=(`cut -d, -f 1 "$archivousers"`)
password=(`cut -d, -f 2 "$archivousers"`)
usuarios=(`cut -d, -f 1 "$archivousers" | tr [A-Z] [a-z] | awk '{print substr($1,1,1) $2}'`)

#Miramos si el grupo existe y si no lo creamos

for grupo in ${grupos[*]}
do
  grep -q "^$group" /etc/group ; let x=$?
  if [ $x -eq 1 ]
  then
    groupadd "$group"
  fi
done


#Creamos los usuarios y los añadimos al grupo con la pass catapumchimpun

x=0
creados=0
for  usuario in ${usuarios[*]}
do
  useradd -n -c ${nombrecompleto[$x]} -g "${grupos[$x]}" $usuario 2> /dev/null
  if [ $? -eq 0 ]
  then
    let creados=$creados +1
          fi

  #En esta parte crearemos la contraseña

  echo "${password[$x]}" | passwd --stdin "$usuario" > /dev/null

  #Como extra que avise por mail

  echo "Bienvenido! Tu cuenta ha sido creada, tu usuario es $usuario y tu contraseña temporal es \"$password\" sin las comillas" | mail -s "Nueva cuenta creada para $usuario" -b root $usuario

  x=$x+1

  echo -n "..."
  sleep .25
done
sleep .25
echo " "
echo "Completado! $creados cuentas han sido creadas y añadidas correctamente."
fi





He mirado de intentar que no se por el then el cual tenga que ir :
if [] ; then  por si no hacia bien el cerrado del if pero, no veo donde cae el error... alguna idea?


En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #1 en: 14 Marzo 2014, 02:46 am »

(edito) hola slyfx perdón escribi una burrada, estaba con otro tema.

revisa por favor el primer if, no deberías agregarle paréntesis y negarla completa? el error entiendo que te tira en la línea 6.

(agrego) no son parentesis, te está faltando un espacio antes del !. no interpreta bien la sentencia. prueba si te funciona ahora, saludos


« Última modificación: 14 Marzo 2014, 03:01 am por Gh057 » En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
slyfx

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #2 en: 14 Marzo 2014, 03:02 am »

(edito) hola slyfx perdón escribi una burrada, estaba con otro tema.

revisa por favor el primer if, no deberías agregarle paréntesis y negarla completa? el error entiendo que te tira en la línea 6.

----------------------
Hola Gh057, es lo que no entiendo porque me tira el error en la linea 12 es decir donde pone "grupos=(cut ...)", no entiendo porque deberia ser alli donde salta el unexpected
Gracias

Edito: ahora leo lo que pone e intento gracias de nuevo
-----------------------

Edito: Nada, sigue tirando el mismo error y en la misma linea, he puesto espacio como tu has dicho y igual, he probado de modificar la forma de hacer la creacion del array pero nada..
Gracias por tu colaboracion
« Última modificación: 14 Marzo 2014, 03:06 am por slyfx » En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #3 en: 14 Marzo 2014, 03:14 am »

agregando un espacio en el primer if, no me tira errores de interpretación:

Código:
~/Codes$ nano error
~/Codes$ ./error
No se ha encontrado el archivo usuarios.csv
~/Codes$ nano usuarios.csv
~/Codes$ ./error
 
Completado! 0 cuentas han sido creadas y añadidas correctamente.
gh057@N37:~/Codes$

si hay algo que no funca bien... pero es lógico, no de sintaxis
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #4 en: 14 Marzo 2014, 03:37 am »

con respecto a usuarios.csv; como lo tienes grabado? no será problema del delimitador?

(agrego) entiendo que la opción d es el delimitador, por lo cual entiendo que si usas la coma deberías indicarla entre comillas; otro punto que veo porqué usas la opción --stdin? no es un parámetro válido de passwd:

Código:
Opciones:
  -a, --all
  -d, --delete
  -e, --expire
  -h, --help
  -k, --keep-tokens
  -i, --inactive INACTIVO
  -l, --lock
  -n, --mindays DÍAS_MIN
  -q, --quiet 
  -r, --repository REP
  -R, --root CHROOT_DIR
  -S, --status 
  -u, --unlock
  -w, --warndays DÍAS_AVISO
  -x, --maxdays DÍAS_MAX
« Última modificación: 14 Marzo 2014, 03:58 am por Gh057 » En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
slyfx

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #5 en: 14 Marzo 2014, 04:13 am »

con respecto a usuarios.csv; como lo tienes grabado? no será problema del delimitador?

(agrego) entiendo que la opción d es el delimitador, por lo cual entiendo que si usas la coma deberías indicarla entre comillas; otro punto que veo porqué usas la opción --stdin? no es un parámetro válido de passwd:

Código:
Opciones:
  -a, --all
  -d, --delete
  -e, --expire
  -h, --help
  -k, --keep-tokens
  -i, --inactive INACTIVO
  -l, --lock
  -n, --mindays DÍAS_MIN
  -q, --quiet  
  -r, --repository REP
  -R, --root CHROOT_DIR
  -S, --status  
  -u, --unlock
  -w, --warndays DÍAS_AVISO
  -x, --maxdays DÍAS_MAX


Exacto, con lo del espacio tenias razon, pues no ejecutaba bien el script, con lo del delimitador si, tengo -d, ya que en el csv lo tengo grabado como:
pepito feo,pass1234,grupo
Con lo cual tendria que añadirse : pfeo (user) pepito feo (name, last name) y el grupo al que pertenece.

Lo de passwd --stdin pense que funcionaria pues vi en algun sitio que lo ponian ya que la opcion -p no la cogia bien es más en la linea de useradd intente ponerla de este modo:

Código:
useradd -n -c ${nombrecompleto[$x]} -g "${grupos[$x]}" -p "${password[$x]}" $usuario 2> /dev/null 

y no lanza error pero no inserta.. muchas gracias por insistir !
En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #6 en: 14 Marzo 2014, 04:19 am »

ok ya no tira errores? privilegios del archivo de lotes? recuerda que estás editando en /etc
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
slyfx

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #7 en: 14 Marzo 2014, 04:24 am »

Si, tengo permisos en todas las carpetas, ahora estoy mirando de solucionar el tema de la password
En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #8 en: 14 Marzo 2014, 04:56 am »

es que no te inserta el addusers porque estás intentando de insertar un nombre con espacios (nombre completo, pepito feo) deberías ahí insertar el usuario pfeo; por lo que te lleva recursivamente a revisar la variable usuario...

el comando cut lo delimitas por comas tanto para password, nombre completo como para grupos, sin embargo en usuarios debes tomar la primera letra, y la segunda cadena completa, que lo limita un espacio.

bueno espero que puedas solucionarlo mirando esos puntos, luego si sigues trabado postea nuevamente el código ya que ha variado bastante, sino vamos a marearnos todos  ;D
en algunas horas vuelvo jejeje saludos!
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
slyfx

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Syntax error: “(” unexpected (expecting “fi”) -- Como puede ser?
« Respuesta #9 en: 14 Marzo 2014, 05:45 am »

es que no te inserta el addusers porque estás intentando de insertar un nombre con espacios (nombre completo, pepito feo) deberías ahí insertar el usuario pfeo; por lo que te lleva recursivamente a revisar la variable usuario...

el comando cut lo delimitas por comas tanto para password, nombre completo como para grupos, sin embargo en usuarios debes tomar la primera letra, y la segunda cadena completa, que lo limita un espacio.

bueno espero que puedas solucionarlo mirando esos puntos, luego si sigues trabado postea nuevamente el código ya que ha variado bastante, sino vamos a marearnos todos  ;D
en algunas horas vuelvo jejeje saludos!



Muchisimas gracias por tu ayuda, referente a lo del cut, he cambiado la coma por ":" a ver que tal pero sigue sin ir. Luego lo que dices de tomar la primera letra y la segunda cadena he realizado un "echo" del resultado tal y como lo tendría que insertar y me hace bien el hecho de coger la primera letra y la segunda cadena pero el problema es que no se inserta..
Por otra parte a nivel de passwd y lo cambié y lo puse en la linea de useradd como ya dije
Código:
useradd -n -c ${nombrecompleto[$x]} -p ${password[$x]} -g "${grupos[$x]}" $usuario 2> /dev/null"
con lo cual ya no está la linea de
Código:
echo "${password[$x]}" | passwd --stdin "$usuario" > /dev/null

Te dejo el código tal y como esta ahora:

Código:
#!/bin/bash

archivousers="usuarios.csv"
IFS=$'\n'

if [ ! -f "$archivousers" ]
then
echo "No se ha encontrado el archivo $archivousers"
else
#Crearemos los usuarios mediante un array si se ha encontrado el archivo
grupos=(`cut -d: -f 3 "$archivousers" | sed 's/ //'`)
nombrecompleto=(`cut -d: -f 1 "$archivousers"`)
password=(`cut -d: -f 2 "$archivousers"`)
usuarios=(`cut -d: -f 1 "$archivousers" | tr [A-Z] [a-z] | awk '{print substr($1,1,1) $2}'`)
#Miramos si el grupo existe y si no lo creamos
for grupo in ${grupos[*]}
do
  grep -q "^$group" /etc/group ; let x=$?
  if [ $x -eq 1 ]
  then
    groupadd "$group"
  fi
done
#Creamos los usuarios y los añadimos al grupo con la pass
x=0
creados=0
for  usuario in ${usuarios[*]}
do
  echo "Name: ${nombrecompleto[$x]}, Usuario: $usuarios, pw: ${password[$x]}"
  useradd -n -c ${nombrecompleto[$x]} -p ${password[$x]} -g "${grupos[$x]}" $usuario 2> /dev/null
  if [ $? -eq 0 ]
  then
    let creados=$creados +1
          fi
  x=$x+1
  echo -n "..."
  sleep .25
done
sleep .25
echo " "
echo "Completado! $creados cuentas han sido creadas y añadidas correctamente."
fi



mi csv usuarios.csves el siguiente:


Código:
Pepito Feo:12345633:156-456-3322:995 Bluto Street, Anywhere, USA 29358:3/19/1992:Accounts:22350
Jennifer Guapa:68451695:326-658-1162:583 Laurel Ave., Pensilvania, TX 65812:1/02/1996:Computer:59655


De nuevo, muchas gracias! sigo buscando a ver que puede ser. Saludos!  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines