/home / fatec / progscripts --::--


Programação de Scripts e Verificação de Logs

Prof. Rossano Pablo Pinto, MSc.

Esta página é melhor visualizada no navegador Firefox.

Aulas

Semanal 4; Semestral 72; Carga horária: 60 h.

Ementa resumida

Paradigmas de programação implementados em linguagens de script; Manipulação de arquivos e bancos de dados usando scripts; Programação em linguagens de scripts; Integração de programas escritos em linguagens de scripts com outras linguagens. Manutenção dos arquivos do Sistema (Arquivos de Log).

CRITÉRIOS DE AVALIAÇÃO

Prova, Trabalhos, Atividades e projetos.
Média Final = (Prova1 * 0.35) + (Prova2 * 0.35) + (Trabalhos/Atividades * 0.1) + (Projetos * 0.2).
Se Média Final >= 6.0 e faltas >= (CH * 0,75), aluno aprovado
Uma prova substitutiva será realizada apenas por alunos que estiverem ausentes na Prova 1 ou na Prova 2.

DATAS DAS AVALIAÇÕES

TURMA DA MANHÃ
05/04/2012 - Avaliação 1 - LOCAL: Sala E2
31/05/2012 - Avaliação 2 - LOCAL: Sala E2
31/05/2012 - Apresentação de projeto - LOCAL: Laboratório 5
14/06/2012 - Avaliação SUB - LOCAL: Sala E2
14/06/2012 - Apresentação de projeto -LOCAL: Laboratório 5


TURMA DA NOITE
24/05/2012 - Avaliação 1 - LOCAL: Sala B10 (ao lado do auditório do Bloco B)
20/06/2012 (quarta-feira das 19:00 às 20:40) - Avaliação 2 - LOCAL: Sala E2 (no bloco A)
21/06/2012 (quinta-feira das 19:00 às 20:40) - Avaliação SUB - LOCAL: Sala B10 (ao lado do auditório do Bloco B)
21/06/2012 (quinta-feira das 20:50 às 22:30) - Apresentação de projeto - LOCAL: Sala B10 (ao lado do auditório do Bloco B)

NOTAS P1,P2,SUB,PROJETO - Média Final (MF)


PLANILHA DE NOTAS TURMA DA NOITE - 1s2012


REQUISITOS DO PROJETO



Material de Apoio


Slackware Book
Fstab
UUID
Apostilas Linux


Atividades

Lista de exercícios 1 - entrega dia 15/03 (TURMA DA MANHÃ)

Lista de exercícios 1 - entrega dia 22/05 (TURMA DA NOITE)

EXECUTE TODOS OS COMANDOS COMO USUÁRIO ALUNO (OU OUTRO S/ PODERES
ADMINISTRATIVOS).

0. Responda:

   0.1 Quais são os file descriptors de STDOUT, STDERR e STDIN ?
   0.2 Indique quais são os operadores para redireção de:

       SAÍDA PADRÃO SEM APPEND
       SAÍDA DE ERRO SEM APPEND
       SAÍDA PADRÃO COM APPEND	     
       SAÍDA DE ERRO COM APPEND
       SAÍDAS PADRÃO E DE ERRO SEM APPEND
       SAÍDAS PADRÃO E DE ERRO COM APPEND       
       ENTRADA PADRÃO 

1. Redirecione a saída STDOUT dos comandos a seguir para os arquivos
   indicados (sem append):

   Comando		Arquivo
   ps ax        	saida1.ps.txt
   ps aux		saida2.ps.txt
   ls /etc		saida3.ls.txt
   
2. Redirecione a saída STDERR dos comandos a seguir para os arquivos
   indicados (sem append):

   Comando		Arquivo
   ls /root		saida4.ls.txt
   kill -9 1		saida5.kill.txt
   touch /root/x	saida6.touch.txt

3. Redirecione as saídas SDTDOUT e STDERR dos comandos a seguir para
   os arquivos indicados:

   Comando		Arquivo
   ls /etc/* /root/*	saida7.ls.txt
   touch X Y /root/Z	saida8.touch.txt

4. Repita os exercícios 1, 2 e 3 com APPEND redirecionando todas as
   saídas para um único arquivo: saida9.comum.txt

5. Redirecione a entrada STDIN dos comandos a seguir:

   cut
   sed
   
6. Teste o comando a seguir:

   tr a-z A-Z < /etc/passwd

   6.1 O que ele faz ?
   6.2 Qual o papel do operador < na linha de comando apresentada?
   6.3 O que a linha de comando a seguir faz?:

       tr a-d A-Z < /etc/passwd > /tmp/rascunho 

   6.4 Qual o papel dos operadores < e > na linha de comando da
       questão 6.3?

7. Suponha que você queira apresentar na tela apenas a primeira linha 
   da saída do comando /sbin/ifconfig eth0. 

   7.1. Quais seriam os comandos executados?

   7.2. Qual é o nome do mecanismo que envia a saída de um processo
        para a entrada de outro?
   
   7.3. Qual é o operador (símbolo) para executar a comunicação entre processos
        da questão 7.2?

8. Qual deve ser a primeira linha de todo script? Qual o significado dela ?


Lista de exercícios 2 - entrega dia 22/03 (TURMA DA MANHÃ)

Lista de exercícios 2 - entrega dia 22/05 (TURMA DA NOITE)


9. Suponha que o administrador de sistemas da FATEC Americana execute
   a seguinte linha de comando:

   ./addusers.sh users plugdev,cdrom,staff /bin/bash

   9.1. Qual é a variável do bash que armazena o valor "./addusers.sh"?  

   9.2. Quais são as variáveis que armazenam os valores "users",
        "plugdev,cdrom,staff" e "/bin/bash"?

   9.3. Qual é a variável que armazena o número de parâmetros passados 
        na linha de comando?

   9.4. Qual é a variável que armazena a lista completa de parâmetros
        passados na linha de comando?

10. O arquivo /etc/passwd armazena a lista de todos os usuários de um
    sistema Linux. Cada linha do arquivo possui a seguinte estrutura
    (leia a página manual com o comando "man 5 passwd"):

    USERNAME:PASSWORD:UID:GID:COMMENT:HOME:COMMAND_INTERPRETER    
   
    10.1. Qual é o comando utilizado para extrair apenas alguns campos
          da linha?

    10.2. Extraia apenas os campos USERNAME, UID e COMMENT da seguinte linha:

          ze:x:1070:100:Usuário Ze - telefone 555-1111:/home/ze/:/bin/bash

    10.3. Apresente na tela o conteúdo do arquivo /etc/passwd
          organizado por ordem alfabética do campo USERNAME. Faça a
          mesma operação para o campo COMMENT.

11. O administrador de sistemas da FATEC Americana precisa enviar uma
    notificação aos usuários do sistema. A notificação possui o seguinte
    texto:

    "Prezado USUARIO, 

    a partir de DIADASEMANA, dia DIADOMES, passaremos
    a limpar a área pública dos HDs dos laboratórios de
    informática. Solicitamos que façam backup dos seus dados.

    Att, ADMIN."

    11.1. Qual é o comando que deve ser executado para que as palavras
          USUARIO, DIADASEMANA, DIADOMES e ADMIN, sejam trocadas para
          "Paulo", "segunda-feira", "17-10-2011" e "Neo"?

    11.2. Elabore um outro exemplo completo.


12. Faça um script que apresente os parâmetros passados na linha de
    comando a seguir:

    ./meuscript.sh usuario1 usuario2 usuario3 usuario4

    O resultado deve ser algo como:

    "PARAMETRO: usuario1
     PARAMETRO: usuario2
     PARAMETRO: usuario3
     PARAMETRO: usuario4"

    OBS.: Utilize o "for".


Lista de exercícios 3 - entrega dia 05/04 (TURMA DA MANHÃ)

Lista de exercícios 3 - entrega dia 24/05 (TURMA DA NOITE)

13. O "for" em bash shell script possui o seguinte formato:

    for VARIAVEL in LISTA; do
    	AÇÕES
    done

    A lista pode ser gerada de diversas maneiras. Suponha que a lista
    seja composta de todos os arquivos do diretório /home/aluno/fotos.
    Faça um script que liste todos os arquivos do referido diretório
    e, como ação, imprima na tela: "FOTOGRAFIA: arquivo", onde
    "arquivo" representa um dos arquivos presentes no diretório.
    DICA: utilize $(comando) ou `comando` para gerar a lista.

14. Utilize o comando find para encontrar todos os arquivos que
    possuem a extensão .conf do diretório /etc.

15. Qual o significado das seguintes variáveis do shell?

    $0
    $1
    $#
    $@
    $!
    $$
    $?

16. Liste todos os usuários do sistema. Para cada usuário, imprima:
    USERNAME, PID, GRUPO PRIMÁRIO e GRUPOS SECUNDÁRIOS

17. Explore os seguintes comandos em 2+ scripts:

    cat
    cd
    chmod
    cut
    echo
    find
    grep
    head
    kill
    ls
    mkdir
    ps
    rm
    rmdir
    /sbin/ifconfig
    sed
    sort
    tail
    tee
    touch

18. Execute os seguintes comandos em sequência:

    cd
    touch prova3
    mkdir diversos
    touch diversos/prova3
    touch prova1 prova2 prova3 prova4.txt
    mkdir -p diversos/prova2/prova2
    echo "Questao 4" > diversos/prova2/prova2.txt

    Encontre:

    	       A) o diretório prova2
	       B) os arquivos prova4.txt e prova2.txt
	       C) Arquivo com o conteúdo "Questao 4"

19. Qual a saída do seguinte script?

    nome="Joseh"
    var1="Meu nome eh $nome"
    var2='Meu nome eh $nome'

    echo $nome
    echo $var1
    echo $var2

20. Faça um script que apresente na tela o nome de todos os arquivos do 
    diretório /var/log que possuam permissão de leitura pelo usuário
    corrente.

21. Elabore um script para criar a conta de 50 usuários. A lista de usuários
    está presente no arquivo contas-2011-10-17.txt. Cada linha so arquivo possui
    o seguinte formato:

       USERNAME ; NOME COMPLETO ; GRUPO PRIMÁRIO ; GECOS

    
    Utilize "for" ou "while".

22. Faça um script que elabore as seguintes perguntas para o usuário e
    decida as ações com base nas respostas:

    Qual é o seu nome completo?

    Você aceita o username $USERNAME? ($USERNAME deve ser extraido do
    primeiro nome digitado do nome completo)

       Se "sim", passe para a próxima questão. Se "não", peça para o
       usuário digitar o username desejado.


Lista de exercícios 4 - entrega dia 24/05 (TURMA DA MANHÃ)

Lista de exercícios 4 - entrega dia 14/06 (TURMA DA NOITE)

23. O programa FinalFrontier2013 precisa dos seguintes serviços sendo 
    executados conforme indicado:

       rmiregistry na porta 8888 (O PID não é armazenado
                                  automaticamente)

       /usr/sbin/sshd na porta 9999 (O PID do sshd é automaticamente
                                     armazenado em /var/run/sshd.pid)
    
    Faça um script que possa ser invocado com as opções (utilize case):
 
         start -> deve verificar se os serviços necessários já estão
	          executando (rmiregistry, sshd e FinalFrontier2013).
	          Caso já estejam, emita uma mensagem indicando isso e
	          finalize o script. Caso contrário, inicie todos os
	          serviços necessários.

	 stop -> finalize os serviços rmiregistry, sshd e FinalFrontier2013

	 restart -> ação de stop + start

	 help-> imprime um breve help do script

	 status-> apresenta as informações dos serviços em execução
	          (se estão sendo executados ou não)

24. O comando "ldd $(which sshd)" lista todas as bibliotecas utilizadas pelo 
    programa sshd, conforme apresentado a seguir:

        linux-gate.so.1 =>  (0xb7f16000)
        libwrap.so.0 => /lib/libwrap.so.0 (0xb7ed5000)
        libpam.so.0 => /lib/libpam.so.0 (0xb7ec9000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7ec4000)
        libselinux.so.1 => /lib/libselinux.so.1 (0xb7eaa000)
        libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7e96000)
        libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7d4a000)
        libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7d46000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7d30000)
        libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7d16000)
        libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7ce4000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7cb9000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7c27000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7c03000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7bff000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7aa0000)
        /lib/ld-linux.so.2 (0xb7efc000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7a97000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb7a93000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7a7a000)

    Faça um script que verifique se cada uma das bibliotecas listadas
    estão presentes no sistema.
    
    DICA: Utilize "for" e uma das duas estratégias:
    	          A) os operadores de teste de arquivo da estrutura de
                     controle "if" e "else" (-f, -e, -s, etc..).
                  B) && e || para o comando ls

25. Escreva um script para detectar quais são os 3 primeiros octetos
    do endereço IP da interface eth0. Executar o comando ping, dentro
    de um "for", para as máquinas com os endereços da mesma rede que
    possuem como quarto octeto os valores 18, 21, 22, 23, 24, 25, 26,
    27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
    49, 50, 51, 52, 53, 54. O comando ping deve ser invocado com os
    parâmetros "-c 1" e "-w 1".

26. Faça um script que configure 10 interfaces de rede. Cada interface deve
    ser configurada com as seguintes informações:

    - Endereço IP
    - Máscara
  
    Utilize ARRAYS para armazenar as configurações das interfaces.

27. Modificar o script /etc/rc.d/rc.yp da seguinte maneira:

    - Quebrar em 2 scripts (rc.ypserver e rc.ypclient)
    - Parte comum deve estar presente em ambos os scripts
    - Utilizar "case" com 'start', 'stop', 'restart' e 'status'
    - Armazenar os PIDs nos arquivos:
             /tmp/yppasswd.pid
             /tmp/ypserv.pid
             /tmp/ypclient.pid

    - Antes de 'start' verificar se daemons já estão em execução

28. Faça um script que calcule a expressão matemática:

    A * B / C



Links Interessantes







Faculdade de Tecnologia de Americana :: Curso de Análise de Sistemas e Tecnologia da Informação
Rua Emílio de Menezes, s/n, Vila Amorim - Tel. +55 (19) 3406-5776 CEP: 13.469-111 / Americana / SP / Brasil
Copyleft 2007-2010 Rossano Pablo Pinto

Atualizada em Thu Feb 3 12:49:19 BRST 2011