Centro de Informática
Sistemas Operativos II

Examen Febrero 2001.

Solución de scripts.

Con libre consulta de material.

1. Escribir un script para encontrar usuarios que haga más de cierto número de días que no ingresan al sistema. Se dispone para ello de los siguientes comandos:
   ypcat passwd
da un listado de todos los usuarios en el sistema.
   lastlog -t$DIAS
da un listado de quienes han ingresan al sistema hace menos de $DIAS. DIAS es una variable inicializada al principio del script, para poder cambiarla fácilmente; fijarla en 30 días. El formato de salida de lastlog es el siguiente:

  Username         Port     From             Latest
  victor           pts/2    :0.0             mié dic 20 19:29:15 -0300 2000
  cristina         :0       console          lun dic 18 14:49:51 -0300 2000
  root             tty2                      dom dic 17 20:34:25 -0300 2000
Los separadores son espacios. (20 puntos)
#!/bin/bash
# prob2: usuarios sin ingreso en los últimos $DIAS
#  DIAS: cantidad de días.

DIAS=30

# lista ordenada de usuarios con ingreso en los ultimos $DIAS
lastlog -t$DIAS | grep -v ^Username | cut -d" " -f1 | \
  sort > lastlog.tmp

# usuarios en /etc/passwd y no en lastlog.tmp
cat /etc/passwd | grep -v "#" | sort | cut -d: -f1 | \
  diff - lastlog.txt | grep "<"

# elimina archivo temporal
rm lastlog.tmp
2. A partir del comando ypcat passwd filtrar las cuentas de usuarios del sistema (con UID menores que 1000) para mostrar sólo los usuarios verdaderos (con UID 1000 en adelante). (10 puntos)
ypcat /etc/passwd | grep -E -v "[^:]+:[^:]*:[0-9]{1,3}:"
3. Escribir un script de arranque tango para un sofware llamado tango que funciona en base a un demonio tangod. El script deberá aceptar los parámetros siguientes y realizar las acciones indicadas:
    start - arrancar el demonio tangod
    stop - detener el demonio tangod, con señal 15
    restart - detener y volver a arrancar tangod
    reload - releer la configuración enviando una señal 1 al proceso tangod.
Sugerencia. El comando ps ax muestra el PID de los procesos en sus primeros 6 caracteres, con relleno de blancos sobre la izquierda. (20 puntos).
Nota para prueba en máquina. El proceso tangod puede simularse con el siguiente script:
#!/bin/bash 
# tangod: emulación de demonio para tango 
# arrancarlo en background 
echo tangod: corriendo... 
trap "echo recibida señal 1" 1 
trap "echo recibida señal 15,terminando ; exit" 15 
while true 
do 
 sleep 6 
done 
###
#!/bin/bash 
# tango: script de arranque para tango. 
# 
# sleep 3 da tiempo a mensajes del script emulador. 
PID=`ps ax | grep tangod | grep -v grep | cut -c1-6 | tr -d " "` 
case "$1" in 
start) 
 /tmp/tangod & 
 sleep 3 
 ;; 
stop) 
 kill -15 $PID 
 sleep 3 
 ;; 
restart) 
 ./tango stop 
 sleep 3 
 ./tango start 
 sleep 3 
 ;; 
reload) 
 kill -1 $PID 
 sleep 3 
 ;; 
*) 
 echo "uso de tango: tango { start | stop | restart | reload }" 
 ;; 
esac