🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: bash y passwd

#7893
From: Claudio S.
Date: Sat, 18 Jan 2003 21:23
78 lines
3308 bytes
El Sat, 18 Jan 2003, Pacolinx <pacolinux@BORRAMEinicia.es> escribi�:
> Pacolinx dijo asi:
> 
[...]
> Pego lo q tengo hecho:
> 
> 
> 
> #cat crear.sh
> ---
> # Creacion de usuarios
> 

Ejecuta con bash -x crear.sh
o bien pon como primera linea del script
#!/bin/bash -x

Y te sacar� una traza de qu� est� haciendo realmente
( el -v tambi�n es �til, pero te muestra los comandos sin haber hecho
las sustituciones de las variables, que en este caso no
te va ayudar tanto).

Ten cuidado con los espacios del fichero alumnes.
Te pongo m�s abajo una forma alternativa.

Un saludo.
--claudio--


> # 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`
>         echo linea: $linea
>         echo alumno: $alumno
>         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


cat alumnes.txt | awk -F';' '{print $4}' | sed 's; ;;g' | while read alumno do
	if grep "^${alumno}:" /etc/passwd > /dev/null
		then
			echo "El usuari $alumno ya  existe"
		else
			echo "El usuari $alumno NO  existe"
	fi

el sed quita los espacios. Hay otra posibilidad, que es usar expresiones
regulares como separador de awk. La expresi�n separadora ser�a:
un numero indeterminado de espacios, un punto y coma y otra cantidfad
indeterminada de espacios (cero o m�s).
El awk anterior habr�a que sustituirlo por
awk -F' *; *' '{print $4}'

Un saludo.
--claudio--
Technical Details
Message-ID: <slrnb2jhf2.mpa.claudio@nntp.tralari.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!127.0.0.1!nobody
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 13:28:58 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!127.0.0.1!nobody
From: "Claudio S." <claudio@ningun.sitio.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: bash y passwd
Date: Sat, 18 Jan 2003 22:23:47 +0100
Organization: Telefonica Data Espagna
Lines: 79
Message-ID: <slrnb2jhf2.mpa.claudio@nntp.tralari.com>
References: <2conf-lb2.ln1@paldaria.dsland.org> <4tgof-ig1.ln1@paldaria.dsland.org>
NNTP-Posting-Host: 139.red-80-59-173.pooles.rima-tde.net
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: nsnmrro2-gest.nuria.telefonica-data.net 1042925336 1741 80.59.173.139 (18 Jan 2003 21:28:56 GMT)
X-Complaints-To: usenet@nsnmrro2-gest.nuria.telefonica-data.net
NNTP-Posting-Date: Sat, 18 Jan 2003 21:28:56 +0000 (UTC)
User-Agent: slrn/0.9.7.4 (Linux)