Centro de Informática
Sistemas Operativos II

Examen Diciembre 1999.

Solución de scripts.

 

Parte A. Sin consulta de material (24 puntos).

Responder brevemente las siguientes preguntas (4 puntos cada una).
1. Diferenciar los caracteres "|", "\", "/" y ";" en el shell, indicando para qué se usa cada uno.
2.  Indicar los modos del editor vi , qué puede hacerse en cada uno, y cómo se pasa de uno a otro.
Escribir comandos para realizar las tareas indicadas:
1. Fijar permisos de ejecución para todos, lectura y modificación para el dueño, lectura para el grupo, en el archivo vlub. Hacerlo en modo simbólico y en modo absoluto.
2. Fijar los permisos del directorio yugo de modo que todos puedan ejecutar los programas contenidos en él, pero sólo pueda verlos y modificarlos el dueño del directorio.
3. Mostrar la ruta completa hacia el ejecutable dondestoy.
4. Buscar, en el directorio actual y en todos los subdirectorios, un archivo de nombre core.

Parte B. Con libre consulta de material (76 puntos).

1. El comando last muestra una línea por cada login:
  victor   :0           console          Fri Dec 17 15:57   still logged in
  reboot   system boot  2.0.36           Fri Dec 17 15:57          (00:51)
  victor   :0           console          Sat Dec  4 19:53 - 20:21  (00:27)
  victor   :0           console          Sat Dec  4 19:31 - 19:53  (00:22)
  cristina :0           console          Sat Dec  4 19:17 - 19:31  (00:13)
  victor   :0           console          Sat Dec  4 15:08 - 15:10  (00:01)
En el primer campo  (columnas 1 a 9, incluyendo espacios al final) está el nombre del usuario; en el último campo, encerrado entre paréntesis, está el tiempo de conexión de ese usuario (columnas 67 a 71, formato hh:mm).  Crear un archivo horas.tmp con el siguiente formato:
  reboot:8:51
  cristina:04:07
  victor:06:00
  victor:10:19
  cristina:00:13
  reboot:18:01
(14 puntos)

2. El archivo horas.tmp contiene información de tiempo de login de los usuarios. Sus campos son, en este orden: nombre de login, horas de conexión, minutos de conexión. El separador es :. El archivo contiene registros en desorden de muchos usuarios. Escribir un script que acumule el tiempo de conexión por usuario, y presente una salida de la forma
  Nombre: cristina - horas: 0, minutos: 22
  Nombre: reboot - horas: 76, minutos: 0
  Nombre: root - horas: 3, minutos: 54
  Nombre: victor - horas: 53, minutos: 21
Se deberá extraer de la suma de minutos, las horas enteras, sumándolas al conteo de horas, mostrando el resto de minutos (operador % en expr).

(26 puntos)

3. Para establecer una conexión PPP vía modem, se dispone del comando pon uruguaynet; luego de esperar 30 segundos, la conexión estará establecida. Para cortarla, se usa el comando poff. Inmediatamente que se establece la conexión, se activa el agente de transporte de correo exim, para enviar los correos en cola, un proceso que puede demorar un tiempo indeterminado. Escribir un script que inicie la conexión, esperre que se establezca, emita el comando fetchmail para traer los correos en el servidor remoto, y corte la conexión luego de asegurarse que el proceso exim haya finalizado. Si el proceso exim aún está corriendo, se debe esperar 10 segundos, tantas veces como sea necesario.
Sugerencia: el comando ps -ax muestra los procesos corriendo. Notar que si se usa grep, este proceso también puede estar en la salida de ps.
(18 puntos)
4. Una empresa usa el campo de comentario de /etc/passwd (campo 5) para guardar información de sus usuarios: nombre en la vida real, teléfono interno en la empresa, dirección particular, teléfono particular. Estos campos están separados por ",". Escribir un script que pregunte al usuario un nombre de login y muestre los datos del usuario, o un mensaje indicando que el usuario no existe. El formato será similar a éste:

  Nombre: victor
  Nombre real:  Víctor González-Barbone
  Interno:  114
  Dirección:  J.Suárez 3023 bis ap. 801
  Teléfono:  2096368

(18 puntos)