Sistemas Operacionais - Gnu/Linux Instalando Programas
Enunciado t3
1. 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
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
–2–
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.
–3–
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.
–4–