4

Click here to load reader

Enunciado t3

Embed Size (px)

Citation preview

Page 1: Enunciado t3

ISCTE – IUL 3º Trabalho de Sistemas Operativos

Ano lectivo 2010-2011 - 2º Semestre

GroupIUL – Sistema de Compras em Grupo

Data de Entrega: 15 de Maio de 2011

(versão 1.1)

Considere os seguintes ficheiros, que serão usados em exemplos deste trabalho. (caso queira, pode copiá-los do servidor Tigre. Estão na directoria /home/exemplos/trabalho3).

==> compradores-26-02-11.txt <== josesilva tintim paulosergio jaquim pedro

==> compradores-27-02-11.txt <==

josesilva rui timtim timtim josesilva

==> compradores-28-02-11.txt <==

josesilva tintim paulosergio

==> oferta-26-02-11.txt <==

Sebentas:Sebentas de SO:22:85:10 ==> oferta-27-02-11.txt <==

Livro so:Livro de sistemas operativos:12:90:4 ==> oferta-28-02-11.txt <==

Massagens:massagens de estimulo cerebral:55:70:22 ==> users.txt <==

josesilva:sporting:1212-1212-121212 cebola:x:2333-2222-2323223 tintim:stromp:2323-2323-2323232 jaquim:ola:2232-1111-11111111 pedro:benfica:3333-3333-3333333

Page 2: Enunciado t3

– 2 –

Parte 1 – Shell script Nesta parte do trabalho pretendem-se um conjunto de scripts que gerem estatísticas de utilização do GroupIUL – Sistema de Compras em Grupo. Os exemplos seguidamente apresentados baseiam-se nos ficheiros apresentados acima e respectivo conteúdo. statglobal.sh Pretende-se criar um relatório de utilização do sistema de compras groupIUL. Para isso, o script deverá analisar os ficheiros respectivos e produzir informação equivalente à seguinte: Numero de ofertas diárias: 3 Numero de licitações efectuadas: 13 Valor médio do custo original das ofertas (Euros): 29 Número médio de licitantes por oferta: 4 Lista de utilizadores activos Utilizador josesilva está activo com 4 licitações Utilizador cebola inactivo Utilizador tintim está activo com 2 licitações Utilizador jaquim está activo com 1 licitações Utilizador pedro está activo com 1 licitações Lista de ofertas com número mínimo de compradores atingido Dia 26-02-11, oferta: Sebentas, mincomp: 10, lic: 5, NOPE Dia 27-02-11, oferta: Livro so, mincomp: 4, lic: 5, OK Dia 28-02-11, oferta: Massagens, mincomp: 22, lic: 3, NOPE statuser.sh Pretende-se criar um relatório de utilização do sistema de compras groupIUL para um determinado utilizador, entre duas datas. O script deverá perguntar nome do utilizador, data inicial e data final, caso estes parâmetros não tenham sido passados por argumento. Em alternativa o utilizador poderá correr o script com argumentos. Ex: ./statuser.sh josesilva 20110226 20110227 Exemplo de execução: Utilizador: josesilva Data inicial (aaaammdd): 20110226 Data final (aaaammdd): 20110227 Calculo do n. de licitações efectuadas por josesilva entre 20110226 e 20110227 verificando compradores-26-02-11.txt (20110226 -> dentro do intervalo) verificando compradores-27-02-11.txt (20110227 -> dentro do intervalo) verificando compradores-28-02-11.txt (20110228 -> fora do intervalo) Total: 3 Calculo do numero de compras efectuadas por josesilva entre 20110226 e 20110227 verificando oferta-26-02-11.txt (20110226 -> dentro do intervalo) minimo compradores: 10, licitações: 5. (não executada) verificando oferta-27-02-11.txt (20110227 -> dentro do intervalo) minimo compradores: 4, licitações: 5. comprou 2 vezes verificando oferta-28-02-11.txt (20110228 -> fora do intervalo) Total compras: 2

Page 3: Enunciado t3

– 3 –

Parte 2 – administração da área pessoal Pretende-se criar alguns mecanismos que melhorem o trabalho remoto em ambiente Linux, nomeadamente no servidor Tigre. O objectivo é criar um conjunto de ferramentas adicionais e um sistema de backups básico da área de trabalho da cadeira de Sistemas Operativos. Esta parte do trabalho divide-se em duas tarefas: a) criação de um conjunto de directorias e ficheiros e b) criação de um conjunto de scripts. a) Ficheiros e directorias Na sua área pessoal deverão ser criadas as seguintes directorias: ~/bin

Nesta directoria deverão ser colocados os ficheiros script de administração (definidos mais à frente no ponto b). Adicionalmente deverá: 1) dar permissão de execução a esta directoria e 2) preparar o ambiente de utilizador para que os ficheiros aí presentes sejam executados como os ficheiros (comandos) do sistema (exemplo: ls, cat), isto é, sem ser necessário colocar ./ à frente do nome do ficheiro, e que possam ser chamados a partir de qualquer directoria em que o utilizador se encontre.

~/backups

Nesta directoria serão colocados os ficheiros de backup. Adicionalmente crie o ficheiro: ~/.backup.config

Este ficheiro deverá conter as “variáveis” de configuração do sistema de backups. Cada linha do ficheiro corresponde a uma variável. Essas variáveis especificam as directorias que devem ser usadas para backup, a data e hora do último backup, o intervalo de tempo em minutos entre sucessivos backup, da seguinte forma:

BACKUPDIRS=aula1:aula2:trabs/trab1:trabs/trab2 LASTBACKUP=201104271104 INTERVALO=5

Assume-se que as directorias especificadas são relativas à directoria principal do utilizador

b) Scripts a desenvolver backupwork.sh Este script deverá gerar um backup da área de trabalho, isto é, das directorias indicadas na variável BACKUPDIRS do ficheiro ~/.backup.config. O ficheiro gerado deve ter o seguinte formato: backup_201104271104.(tar.gz|tgz), em que 201104271104 representam a data e hora a concatenados (ano, mês, dia, hora e minutos) a que o script foi gerado. Adicionalmente deverá actualizar a variável LASTBACKUP.

Page 4: Enunciado t3

– 4 –

backuplist.sh Este script mostra a data e hora do último backup, bem como uma listagem dos ficheiros existentes nesse backup. backupmenu.sh Este script será responsável pela gestão do sistema de backups. Deverá apresentar um menu com as seguintes opções:

1. Mostrar directorias 2. Acrescentar directoria 3. Apagar directoria 4. Ver lista de backups 5. Ver utilização em disco

A opção 1 deverá mostrar as directorias definidas na variável BACKUPDIRS. As opções 2 e 3 deverão permitir modificar estas directorias. A opção 4 deve mostrar uma listagem dos backups existentes, isto é, uma listagem das datas e horas. A opção 5 deverá mostrar o espaço ocupado pelos backups. Indique a configuração que usaria e os passos necessários para colocar o script de backup no crontab ? Entrega do Trabalho: A entrega do trabalho deverá ser um ficheiro zip contendo os seguintes ficheiros:

- Parte 1: statglobal.sh e statuser.sh. - Parte 2 a): um pequeno relatório que explique como procedeu (relatorio.txt) e cópia

dos ficheiros de configuração que considere necessários; - Parte 2 b): os ficheiros pedidos: backupwork.sh, backuplist.sh e

backupmenu.sh. Os passos relativos ao crontab deverão ser incluídos no ficheiro relatorio.txt.

Nota: o nome dos ficheiros dos scripts devem obrigatoriamente obedecer aos nomes pedidos.