Linux/Unix Shell Scripting - programa con shell script

 
Vista:

programa con shell script

Publicado por javier  (1 intervención) el 07/09/2009 21:14:08
Buenas noches que tal, mi nombre es Javier y les escribo primero para felicitarles por el foro y cu pagina y segundo para plantearles el siguiente problema:
Deseo escribir un programa en Shell de Unix, para vigilar a todos los usuarios que
inician y terminan sesión y comunicarlo, a medida que entran y salen, a un fichero llamado
ent-sal.
Pienso que el shel script esta correcto pero cuando lo ejecuto me dice lo siguiente:

line 24: "error de sintaxis cerca de token no esperado `done' "
line 24: `done'
lo he revisado y no encuentro el problema, me pueden echar una mano por favor, estoy desesperado..gracias.


if [ -f ent-sal.log ] ; then

rm ent-sal.log

fi

if [ -f entrada ] ; then

rm entrada

fi

if [ -f salida ] ; then

rm salida

fi


while [ 1 ]

do


who > entrada

sleep 60

who > salida


#encontramos las diferencias y buscamos '<' y '>' para luego sustituirlos por

#"salida" y "entrada", todo esto se redirecciona a continuacion de un fichero de log

diff entrada salida | grep -e '<' -e '>' | sed 's/</Salida: /g' | sed 's/>/Entrada: /g'>> ent-sal.log


done
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:programa con shell script

Publicado por Tom (361 intervenciones) el 08/09/2009 17:35:18
¿ es una copia literal o editada de tu script ?

Solo se me ocurre que en el original te faltara por cerrar alguna comilla ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:programa con shell script

Publicado por Linusero (3 intervenciones) el 16/09/2009 15:48:25
Lo que puedes hacer, más fácil, es lo siguiente.

Editar el fichero /etc/hosts.allow y añadir la siguiente línea:

ALL: ALL: spawn ( echo "%h" > "/tmp/Entrada_$(date +%%Y%%m%%d%%H%%M%%S)" ) ; : ALLOW

cada vez que alguien use "telnet" a tu PC, se crea un fichero en /tmp con el nombre, por ejemplo, "Entrada_20090916154009" (fecha y hora), cuyo contenido es la dirección IP del que entra. Prueba a hacer un "telnet localhost". Se crea ese fichero con la entrada "127.0.0.1" ....

El resto, sería comprobar las entradas anteriores con cierta perioricidad ( bien con script o usando watch -d -n1 "ls -lta /tmp/Entrada*" )

Mirate el manual del hosts.allow (man hosts.allow) y verás que otras opciones tienes (yo he utilizado para el ejemplo el %h, que es la dirección IP del cliente), pero hay otras tambien sugerentes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar