🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7895

Re: bash y passwd

#7895
From: enrique
Date: Sat, 18 Jan 2003 22:46
96 lines
3698 bytes
Pacolinx <pacolinux@BORRAMEinicia.es> writes:

> Pacolinx dijo asi:
> 
> > Hola
> > Estoy haciendo un script para crear usuarios de forma automatica.
> > Es para un aula de informatica de secundaria
> > Los datos de los usuarios estan en un fichero
> > 
> > Quiero comprobar q el usuario no existe en /etc/passwd, como lo hago
> > Siempre me dice q no existe. Pq?
> 
> Sigue sin irme despues de lo q me habes contado.
> Pego lo q tengo hecho:
> 
> # Creacion de usuarios
> 
> # Comtamos cuantos usuarios hay
> lineas=`wc -l < alumnes.txt`
> 
> echo alumnos: $lineas
> I=1
> 
> # Comprobamos si existe la carpeta
> if [ ! -d /home/alumnes ]; then
>         echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>         echo creando el directorio /home/alumnes ....
>         echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>         mkdir /home/alumnes
> fi
> chmod 755 /home/alumnes
> 
> while [ $I -le $lineas ]; do
>         linea=`sed -n ${I}l alumnes.txt`
>         alumno=`echo $linea | cut -d";" -f3`

�Aqu�! �Aqu�!

El mando 'cut' te incluye los espacios. 

>         echo linea: $linea
>         echo alumno: $alumno

Aqu� no se ven los espacios. Si hicieras

          echo alumno: ">$alumno<"

ya los ver�as. Lo importante son las comillas, no los ><, que
s�lo sirven para amuentar la visibilidad

Podrias sacar el numbre de alumno asi:
        
          alumno=`echo $linea | cut -d";" -f3 | sed 's/ //g'`

>         let I=$I+1
>         #if [ `grep "^${alumno}:" /etc/passwd | wc -l` -eq 1 ]
>         #if  egrep -q "^${alumno}:" /etc/passwd
>         if grep "^${alumno}:" /etc/passwd
>         then
>                 echo "El usuari " $alumno " Ya  existe"
>         else
>                 echo "El usuari " $alumno " No existe"
>         fi
> done


Te sugiero otra simplificaci�n:

# La shell dividir� las l�neas de 'input' por ';' en vez de 
# por espacios:
IFS=";"

# Elimina espacios que rodeen los puntos y comas, dejando otros
# y pasa el resultado al 'while' (nota el '|' al final):
sed 's/ *; */;/g' alumnes.txt |

# lee una linea a la vez, dividela por los ";", almacena las partes
# en las variables mencionadas:
   while read grupo apellido alumno lodemas; do
        echo linea: $linea
        echo grupo:    ">$grupo<"
        echo apellido: ">$apellido<"
        echo alumno:   ">$alumno<"
        echo lodemas:  ">$lodemas<"
        echo
        if grep "^${alumno}:" /etc/passwd
        then
                echo "El usuari " $alumno " Ya  existe"
        else
                echo "El usuari " $alumno " No existe"
        fi
        echo
        echo
   done

Saludos, Enrique
Technical Details
Message-ID: <m3el7ayt3c.fsf@arabia.nodomain>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed1.e.nsc.no!nsc.no!nextra.com!news4.e.nsc.no.POSTED!53ab2750!not-for-mail
References: <2conf-lb2.ln1@paldaria.dsland.org> <4tgof-ig1.ln1@paldaria.dsland.org>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,a0ddc9dad727a552
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-01-18 14:46:16 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed1.e.nsc.no!nsc.no!nextra.com!news4.e.nsc.no.POSTED!53ab2750!not-for-mail
Newsgroups: es.comp.os.linux.programacion
Subject: Re: bash y passwd
References: <2conf-lb2.ln1@paldaria.dsland.org> <4tgof-ig1.ln1@paldaria.dsland.org>
From: enrique@arabia.nodomain
Message-ID: <m3el7ayt3c.fsf@arabia.nodomain>
Lines: 96
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
NNTP-Posting-Host: 80.213.3.180
X-Complaints-To: news-abuse@telenor.net
NNTP-Posting-Date: Sat, 18 Jan 2003 23:46:15 MET
X-Trace: news4.ulv.nextra.no 1042929975 80.213.3.180
Date: 18 Jan 2003 23:46:15 +0100