MAC 499 - Trabalho de Formatura Supervisionado






Estágio Supervisionado realizado no Centro de Computação Eletrônica da USP (CCE).

- Período: março/2000 a setembro/2001.
- Aluna: Camila Corrêa Moraes
- Responsável na Empresa: Rosemary Miryam Nowak
- Professora supervisora: Nami Kobayashi
 
 


 1. Sobre a empresa

  O CCE é o órgão responsável pela área de informática e comunicação de dados da Universidade de São Paulo - USP, e também presta serviços de informática para a Comunidade Universitária.
    Ele auxilia a Comissão Central de Informática (CCI) a formular as diretrizes gerais de informática e é responsável por executá-las. Assessora o Reitor em assuntos relativos à informática, e em programas centralizados de apoio de informática.
    De forma breve, pode-se discriminar as grandes áreas de atuação do CCE, neste momento, como segue:
            1 - Gerência da USPnet, a rede computacional da USP, englobando a manutenção de sua espinha dorsal, e projetos de redes locais de Unidades.
            2 - Gerência do Programa Pró-aluno, da Rede Aluno e dos projetos a eles associados.
            3 - Prestação de serviços de informática a docentes, pesquisadores e alunos, englobando correio eletrônico, acesso à USPnet por linha discada e apoio ao uso de ferramentas e ambientes.
            4 - Apoio a pesquisadores que necessitam de recursos de computação de alto desempenho para desenvolvimento de seus trabalhos.
            5 - Suporte a computadores de uso geral da administração da Universidade.
            6 - Prestação de serviços de manutenção de microinformática.

    Maiores informações sobre a empresa podem ser encontradas em  www.usp.br/cce
 
 


2. Atividades desenvolvidas durante o Estágio

    De Março/2000aMarço/2001 trabalhei na Divisão Técnica de Suporte (DSU),que é responsável pelo desenvolvimento de programas e projetos para otimização do funcionamento da UspNet.

    Entre as diversas atividades que realizei no DSU estão:

Março e Abril de 2000:
    Programas em Perl e em C para controle de logs e estatísticas de acesso ao antigo sistema de e-mails da USP (Sistema Spider).

Aqui está um exemplo desses programas. Basicamente tal programa recebe como entrada um arquivo de logs dinâmico gerado continuamente pelas máquinas servidores de e-mail, que contém dados sobre folders acessados, tempo que o usuário permaneceu logado no sistema e serviços utilizados, entre outros. O programa então faz uso de expressões regulares para filtrar tais dados e gerar um arquivo de saída com tais dados formatados.

Os objetivos desse programa eram analisar o número de acessos diários feitos pelos usuários a suas caixas de e-mail e determinar os folders mais acessados e os serviços mais utilizados (composição, leitura, forward, etc.). Os resultados obtidos seriam utilizados posteriormente para ajudar na migração do sistema de e-mails de plataforma SUN para Alpha, da Digital.


 Maio a Julho de 2000:
    Migração do Sistema de e-mails Spider de quatro servidores SUN para um dois Servidores Alpha, da Digital, o que incluiu mudanças em todos os scripts que formavam o Sistema (a maioria em Perl e Shell) devido a diferença entre as duas plataformas. Tal mudança foi necessária devido ao aumento do tráfego do sistema, o que estava gerando sobrecarga nas antigas máquinas SUN.

DESCRIÇÃO DO SISTEMA

O sistema possui duas funções principais:

Programas externos utilizados pelo Spider: A primeira parte do trabalho que realizamos foi fazer as modificações dos programas em Perl e shell scripts que compunham o Sistema Spider para instalá-los nas máquinas da Digital.

O sistema em si possuía a seguinte estrutura:

  Nos diretórios /export/home/.spider/<usuário> estava a alma do sistema, com todos os dados e folders de cada usuário. A estrutura de tal diretório seguia o seguinte esquema:

Subdiretórios:

/.info - armazena status do usuário

/.desktop - armazena opções do usuário

/.ant - armazena senhas antigas

/.filter - banco de dados dos filtros usados

/.compress - nome dos folders comprimidos

/.att - armazena os attachments
 
 

Em /.att haviam os seguintes arquivos:

.attcomp - armazena attachments do compose

.senders - usuários em férias

.sent - e-mails a serem enviados

.browser - browser usado pelo usuário

.arq - tranferência de arquivos

.addressbook - addressbook do usuário

.control - assinatura do programa principal de login

.signature - assinatura definida

.vacation - mensagem de usuário em férias

.time - controle de sessão

./<usuário>/header - cabeçalho da mensagem

./<usuário>/seq - seqüência a ser exibida

Os programas a serem modificados, os quais geravam os arquivos acima, encontravam-se em /www/cgi-bin/<dir>, onde <dir> poderia ser:

Haviam também arquivos de apoio a esses programas, em /workvar/<dir>, onde <dir> se dividia em:  BALANCEAMENTO DE CARGA

Devido a grande quantidade de dados passando pelos servidores, foi desenvolvido shell scripts e programas em Perl para fazer o balanceamento de carga entre os quatro servidores antigos.

O programa carga.pl verificava a carga em cada máquina e mandava rodar os programas na máquina com menor carga (besthost). O programa lb.pl verificava o besthost e roteava os logins para ele (montava a URL correspondente a melhor máquina).

O Sistema SPIDER era constituído de centenas de programas em Perl, os principais citados acima, e em C. Para realizar a migração para as máquinas Alpha foi necessário realizar modificações na maioria desses programas.


Agosto de 2000:
    Montagem de rede com servidor Windows 2000 e Windows NT e testes com o funcionamento da rede para comparação de eficiência com a rede Linux.

A pretenção era montar uma rede Windows e fazer a comunicação cliente/servidor sem usar protocolo TCP/IP. Tal rede seria futuramente instalada nas bibliotecas do campus e teria como objetivo bloquear o acesso a páginas da Internet que não fossem as páginas do SiBi, algo que muitos usuários fazem com freqüência.

Utilizei três PC's para fazer os testes, dois funcionando como clientes e tendo Windows 95 instalado e outro como servidor, primeiramente com Windows NT Server e depois com Windows 2000 Server. Através da utilização de uma ferramenta para comunicação, os clientes se logavam remotamente ao servidor e utilizavam somente os recursos deste e os softwares instalados. Comparei as diferenças entre o NT e o 2000 e realizei configurações para tentar fazer a comunicação entre as máquinas sem o uso do protocolo TCP/IP. Era possível realizar a comunicação usando o protocolo NetBEUI, mas após a realização de alguns testes constatou-se que tal protocolo mantém vínculo com o TCP/IP e que a total independência deste protocolo era impossível.


Setembro de 2000 a Março de 2001:

    Projeto de Monitoração das máquinas do CPD, que incluem os computadores do LCCA (Laboratório de Computação Científica Avançada) e também máquinas onde rodam os sistemas de e-mail da USP, e também o Júpiter, Mercúrio e Fênix. Os resultados desse projeto podem ser vistos em  suporte.cce.usp.br/monitoracao .

O objetivo desse projeto era construir um sistema que auxiliasse os operadores das máquinas a detectar problemas e tornar as soluções mais rápidas.

O PROJETO

Uma máquina era usada como servidor (suporte.uspnet.br), onde foram instalados os programas que capturam os dados enviados via socket pelos clientes (demais máquinas do CPD) para análise e posterior geração de relatórios que são colocados na web (vide URL acima) através de programas em Perl/CGI com os resultados obtidos. No servidor também se encontram diversos programas em Perl, na maioria, para adição de novas máquinas a serem monitoradas e geração das páginas web com erros de cada máquina. O que se verificava a princípio eram quatro dados principais:

- UPTIME: tempo que a máquina estava no ar desde o último reboot;

- ACCOUNT: data do arquivo de dados;

- LS: número de processos em looping;

- DF: espaço em disco;

- PING: comunicação com a máquina;

- E-MAILS NA FILA (caso a máquina rodasse o sistema de e-mails).

Dependendo dos resultados enviados pelos clientes sobre esses dados, o sistema indicava na página web de monitoração o estado da máquina para cada serviço (ok, alerta, ruim).

Nas máquinas clientes eram instalados basicamente três programas: um programa em C para enviar um arquivo texto com dados do estado atual da máquina e dois shell scripts para gerar tal arquivo e "limpar" o arquivo de dados a cada período de tempo.

Tais programas eram adicionados ao "crontab" (programa Unix para agendamento de tarefas) para serem executados periodicamente.


    Em Abril/2001fui transferida para a Divisão Técnica de Apoio Tecnológico (DAT), que presta serviços de assessoria aos usuários da UspNet.

    Inicialmente, fiquei encarregada de prestar suporte aos funcionários do HelpDesk na parte de problemas com vírus de computador e como solucioná-los. Dei uma série de palestras sobre o assunto durante Abril e Maio/2001 e criei uma página com informações sobre vírus e anti-vírus, que pode ser acessada aqui .

Abaixo segue um exemplo dos textos que usava para a realização das palestras:
 
 

VÍRUS DE COMPUTADOR



O que é um vírus de computador ?

É um programa desenvolvido para causar danos no sistema por ele infectado e para se propagar para outros computadores sem o conhecimento do usuário.

Como o computador é contaminado ?

Em geral os vírus são transmitidos através de e-mails ou de disquetes contaminados. Eles vêem na forma de arquivos executáveis (.exe) ou em alguns casos em arquivos com extensão .pif. É importante ressaltar que o vírus só contamina o computador quando esse arquivo é executado, ou seja, a leitura de um e-mail com um arquivo de vírus anexado ou a visualização dos arquivos de um disquete (por exemplo, um "dir a:" ) dificilmente provoca a contaminação.

Como "limpar" os estragos provocados por um vírus?

Os vírus em geral contaminam arquivos de programa, que normalmente têm extensões como .exe, .com, .dll, .bin, etc.

Quando o computador já se encontra contaminado é necessário primeiramente remover os arquivos gerados pelo vírus e depois desfazer as alterações causadas por este nos arquivos do sistema.

Nas máquinas do CCE, você pode acessar a página http://ant107.cce.usp.br/virus, onde existem várias informações sobre os principais vírus encontrados na USP e como desfazer os estragos causados por eles.

A importância do anti-vírus.

Anti-vírus são programas que você instala no seu sistema a fim de se proteger contra os vírus. Esse programas possuem ferramentas para fazer a limpeza de arquivos corrompidos por vírus e também contém informações para detectar diversos vírus. Assim, se você tentar executar ou copiar algum vírus conhecido pelo anti-vírus para o seu computador você será alertado e o acesso ao vírus será bloqueado pelo sistema.

Dentre os anti-vírus mais conhecidos existem o Innoculate, que você pode encontrar gratuitamente na Internet, o VirusScan, da McAfee (http://www.nai.com ), e o Norton Anti-Virus, da Symantec (http://www.norton.com).

Todos esse anti-vírus precisam ser atualizados periodicamente (em geral a cada 15 dias) para poder manter uma lista atualizada de vírus conhecidos. Os arquivos de atualização podem ser encontrados nas páginas dos fabricantes, citados acima.

Na página da McAfee você encontra também uma biblioteca de vírus, com diversas informações sobre os vírus conhecidos, tais como data da criação, características do vírus, quais os sintomas do vírus no computador, como consertar os arquivos danificados pelo vírus e qual a primeira versão do arquivo de atualização que detecta o vírus (a mínima que você deve ter instalada para o vírus ser detectado ).


   Entre Junho e Agosto/2001 prestei assessoria aos funcionários da Divisão Técnica de Operação e Infra-estrutura (DTO) nainstalação e configuração de ambientes Linux, dando palestras e tirando dúvidas sobre o assunto.

  Abaixo segue o texto usado em algumas das palestras:
 
 

LINUX

I - Principais distribuições existentes:

II - Instalação do Conectiva 5.0
- Antes de iniciar a instalação de qualquer distribuição Linux tenha em mãos as principais configurações da máquina, tais como nome do fabricante e modelos das placas de rede, vídeo, som, modem, etc., tipo do monitor (se possível valor das freqüências horizontal e vertical) e modelo do mouse e teclado.

- Criação das partições: No início da instalação é executado o programa "Disk Druid" (ou o "Fdisk") para criação das partições Linux. Se na máquina houver uma partição com Windows ela pode ser mantida, podendo ser posteriormente acessado o Linux ou o Windows, através de dual boot.
O Linux requer 2 partições, uma montada na raiz onde será instalado o sistema e outra chamada de "swap", ou seja, uma partição para troca de dados, a qual deve ter em geral o mesmo tamanho da memória RAM.


Após a criação das partições, o Linux é instalado na partição raiz com suas funções principais (instalação típica).

III - Configuração

Para máquinas com dual boot deve-se configurar o gerenciador de boot LILO no arquivo /etc/lilo.conf. Após as modificações necessárias execute lilo no prompt.

1. Configuração do ambiente gráfico ("X")
Em geral usa-se o programa Xconfigurator onde é pedido as definições da placa de vídeo e do monitor, assim como a resolução apropriada para o "X". Tais configurações são guardadas no arquivo /etc/XF86Config.

2. Configuração da rede
Usa-se o programa netconfig, onde são definidas as configurações da placa de rede e também nº IP, gateway, DNS e demais informações para colocar a máquina em rede.

3. O root
O superusuário root tem total domínio do sistema e seus arquivos. Para configurar a máquina deve-se estar logado como root.

4. Pacotes RPM
O Conectiva e o Red Hat apresentam diversos utilitários que se encontram em pacotes tipo RPM. Para instalá-los no sistema, logado como root execute:

rpm -ivh <nome-do-pacote.rpm>


3. Conclusões

3.1 Considerações gerais sobre a empresa e o trabalho em equipe

Durante os 18 meses de estágio no CCE tive a oportunidade de ter contato e trabalhar com máquinas que antes não conhecia, como workstations SUN e computadores de grande porte da CRAY, SUN e DIGITAL. Considero esta experiência de grande importância pois pude desenvolver programas para diversos ambientes UNIX (Solaris, AIX, Linux) e me familiarizar com o funcionamento de computadores desse tipo.

Muito importante também foi o contato com o ambiente de uma empresa e o trabalho em equipe, o que é bem diferente do ambiente acadêmico. No início do desenvolvimento dos projetos eram feitas algumas reuniões dos estagiários e analistas com os chefes do departamento, que nos explicavam o funcionamento do sistema antigo (no caso da migração do sistema de e-mails) e como deveria funcionar o novo sistema, ou o que deveria ser feito no novo projeto. Assim o grupo de trabalho - composto por analistas e estagiários - obtinha a especificação do trabalho e a partir desse ponto o projeto era dividido em blocos, onde cada pessoa ou uma pequena equipe de duas ou três pessoas ficava responsável pelo desenvolvimento de determinado bloco.

Os chefes do departamento estabeleciam prazos (geralmente flexíveis) para a conclusão de cada parte do projeto e os analistas coordenavam o trabalho para que os prazos fossem cumpridos. Periodicamente eram feitas reuniões para avaliar o projeto em andamento e corrigir alguns erros.

Durante o período em que estive no DSU tive a oportunidade de desenvolver os projetos de migração do sistema de e-mails e de monitoração junto com outros estagiários, entre eles alguns alunos do BCC, tais como o Daniel Martins Sakai, o Pratip Roy e a Tessie Ikemori. Os projetos eram supervisionados por analistas do departamento que nos orientavam na implementação de código e configuração das máquinas. Os analistas recebiam orientações dos chefes do departamento. Tal estrutura hierárquica, comum em empresas, traz uma nova noção de trabalho em equipe e torna a execução das tarefas mais organizada, o que nem sempre ocorre nos trabalhos feitos na faculdade.

Durante o período em que estive no DAT tive a oportunidade de lidar mais com outras pessoas e realizar trabalhos menos técnicos, tais como as palestras que dei. Considero tal atividade importante para a formação de um bom profissional, pois ajuda a melhorar a comunicação entre as pessoas da área e pessoas de outras áreas, que não têm conhecimentos técnicos em informática.

3.2 Disciplinas relevantes

Algumas disciplinas do BCC, tais como Estruturas de Dados, Laboratório de Programação I e II, Sistemas Operacionais, Engenharia de Software e a optativa Redes de Computadores - uma perspectiva de software, foram bastante úteis para um melhor desenvolvimento dos trabalhos no estágio, pois proporcionaram uma visão de implementação racional de código e estruturação de sistemas, o que facilitou o desenvolvimento dos projetos.

3.3 Algumas críticas

Numa análise geral, o estágio no CCE foi proveitoso, porém duas críticas podem ser feitas:

3.4 Pretensões futuras

Depois de formada pretendo atuar nas áreas de T.I. (tecnologia da informação) ou redes - que me despertaram bastante interesse durante o curso. Não gostaria de trabalhar com desenvolvimento de programas (área que atuei bastante durante o estágio) pois considero um trabalho pouco dinâmico e sem muitos desafios.

Para aprimorar meus conhecimentos pretendo ingressar em breve num curso de pós-graduação, provavelmente na área de redes ou sistemas distribuídos, e também trabalhar em uma empresa na área de redes ou T.I..


4. Bibliografia

Web pages:

Apresentação em PowerPoint dos projetos de migração de e-mails e monitoração: mac499.ppt