Article View: es.comp.os.linux.programacion
Article #7895Re: bash y passwd
From: enrique
Date: Sat, 18 Jan 2003 22:46
Date: Sat, 18 Jan 2003 22:46
96 lines
3698 bytes
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-mailReferences:
<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