ARC60808-2014-2

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Professores: Odilson Tadeu Valle e Tulio Alberton Ribeiro
Encontros: 2ª feira, 4ª feira e 6ª feira entre 13h30 às 15h20 turma A e 15h40 às 17h30 turma B
Atendimento paralelo: Odilson 3ª feira das 9h40 às 10h35 e 4ª das 14h25 às 15h20. Local: Lab. de Desenvolvimento.
Email: odilson@ifsc.edu.br e tulio.alberton@ifsc.edu.br
IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação e aguardar o parecer da coordenação.

Referências bibliográficas

Diário de aulas

Aula 1 - 30/7/14: Apresentação da disciplina
  1. Auto apresentação
  2. Apresentação da Wiki
  3. Divisão da turma -- A e B
  4. Apresentação do modelo de aulas a ser adotado -- laboratório
  5. Visão geral de Gerência de Redes
    1. Ementa da disciplina
    2. Ementa detalhada
    3. Explanar os três blocos da disciplina: servidor, serviços, segurança e monitoramento de redes
  6. Avaliação
    1. Teórica
    2. Prática
    3. Recuperação de conteúdo e reavaliações
  7. Relação com outras disciplinas do curso
    1. Redes de Computadores I: Modelo Cliente/Servidor. Até agora o curso foi focado no cliente, em ARC o foco muda para o lado do servidor (o lado de dentro do balcão :) )
  8. Conceituação das máquinas virtuais e seu uso
    1. Motivo de uso no laboratório
  9. Recapitulação do processo de boot
Aula 2,3,4 - 1,4,6/8/14: Revisão dos comandos básicos
Objetivo: Revisão dos comandos básicos, familiarização e fixação do conteúdo.

Material Auxiliar (Comandos básicos 01) (Comandos básicos 02 )

  1. Abra um terminal, no qual todos os passos a seguir serão executados.
  2. Execute o comando history -c.
  3. Execute o comando pwd. Escreva a saída resultante deste comando. Este será o seu diretório raiz.
  4. Crie um diretório que identifique a qual turma você pertence. Por exemplo, se você pertence a turma A, execute mkdir turmaA. Se você pertence a turma B, execute mkdir turmaB. OBS: todos os diretórios e arquivos que você for trabalhar daqui para frente, faça dentro da sua pasta TURMA.
  5. A partir do seu diretório turma, diretório do item 4, crie a seguinte árvore de diretórios, utilizando o comando mkdir e o conceito de caminho relativo.
    1. Brasil
      1. regiaoNorte
        1. amazonas
        2. acre
      2. regiaoSul
        1. parana
        2. santaCatarina
  6. Entre no diretório regiaoNorte.
  7. Liste os diretórios existentes dentro do diretório atual, e anote a saída.
  8. Copie o diretório amazonas com o nome para.
  9. Execute o comando ls, e escreva abaixo a saída resultante deste comando.
  10. Entre no diretório regiaoSul, e renomeie o diretório parana para o nome rioGrandeSul.
  11. Liste os diretórios e escreva abaixo a saída resultante deste comando.
  12. Volte para o diretório raiz. Escreva abaixo o comando que você utilizou para executar esta tarefa.
  13. Liste o conteúdo do diretório raiz e redirecione a saída para um arquivo com o nome saidaDirRaiz.arq e que este arquivo fique dentro do diretório amazonas.
  14. Liste o conteúdo do seu diretório turma, criado no item 4, e redirecione a saída para um arquivo com o nome saidaTurma.arq e que este arquivo fique dentro do diretório amazonas.
  15. Liste o conteúdo do diretório regiaoSul e redirecione sua saída para um arquivo com o nome estados.sul e que este arquivo fique dentro do diretório amazonas.
  16. Vá até o diretório amazonas, execute o comando cat /etc/services e more /etc/services (um de cada vez). Qual a diferença entre os dois comandos?
  17. Ainda com o comando cat e utilizando o conceito de *, visualize todos os arquivos terminados em .arq.
  18. Apague os arquivos terminados em .arq e .sul.
  19. Verifique qual é o diretório corrente e, caso não seja o diretório home do seu usuário, vá para o mesmo.
  20. Liste o conteúdo do diretório home do seu usuário.
  21. Crie dois diretórios com nomes aula1 e aula2 no diretório home do seu usuário.
  22. Crie três subdiretórios em cada um dos diretórios criados acima, com nomes aula11, aula12 e aula13 no diretório aula1, e aula21, aula22 e aula23 no diretório aula2.
  23. Remova os subdiretórios aula13 e aula23.
  24. Crie um arquivo vazio dentro do diretório aula12 com o nome texto1.
  25. Copie o arquivo texto1 para o diretório aula22 com o nome texto2.
  26. Altere o conteúdo do arquivo texto1, colocando agora alguma saída de algum comando como conteúdo. Dica: utilize redirecionamento.
  27. Mova o arquivo texto1 para o diretório aula11.
  28. Copie o arquivo /etc/passwd para o diretório aula2 com o nome usuarios.
  29. Copie o arquivo /etc/protocols para o diretório aula1 com o nome protocolos.
  30. Crie um link simbólico do arquivo texto1 no diretório home do seu usuário com o nome linktexto1.
  31. Verifique o conteúdo do arquivo de link linktexto1 e veja se confere com o conteúdo do arquivo texto1.
  32. Com o comando find, busque, a partir do diretório home do seu usuário, os arquivos com o nome aula.
  33. Verifique se há a ocorrência da palavra “Protocol” no arquivo protocolos.
  34. Liste as doze primeiras linhas do arquivo usuarios.
  35. Liste as quinze últimas linhas do arquivo protocolos.
  36. Mostre quantas linhas, palavras e caracteres possui o arquivo protocolos.
  37. Liste por ordem ascendente o arquivo usuarios.
  38. Liste por ordem descendente o arquivo protocolos.
  39. Liste pausadamente o arquivo protocolos.
  40. Liste o arquivo protocolos, ocultando todas as colunas do arquivo a partir do caractere #.
  41. Mostre somente os primeiros 6 caracteres de cada linha do arquivo usuarios.
  42. Verifique quais os processos que estão rodando no computador.
  43. Mostre o calendário do mês atual do seu terminal e, depois, limpe a tela do seu terminal.
  44. No diretório aula22, crie 11 arquivos com os seguintes nomes: trabalho1, trabalho2, trabalho3, teste1, teste2, exame1, exame2, texto1, texto3, notas e anotacoes, e coloque nomes de pessoas diferentes, palavras aleatórias, etc ... em cada um dos arquivos.
  45. Liste o diretório aula22 apresentando somente os arquivos que comecem com a letra t.
  46. Liste o diretório aula22 apresentando somente os arquivos cujo terceiro caractere seja a letra a.
  47. Liste o diretório aula22 apresentando somente os arquivos que termine com o caractere 2.
  48. Liste o diretório aula22 apresentando somente os arquivos que possuam a substring nota em seu nome.
  49. Liste o diretório aula22 apresentando somente os arquivos que possuam x no seu nome.
  50. Liste o conteúdo dos arquivos que comecem com tr do diretório aula22.
  51. Liste o conteúdo dos arquivos que terminem com e2 do diretório aula22.
  52. Liste o conteúdo de todos os arquivos do diretório aula22.
  53. Liste o conteúdo de todos os arquivos que possuam a substring ex no nome do arquivo do diretório aula22.
  54. Liste o diretório do seu usuário, de forma detalhada (-l) redirecionando a saída para um arquivo com o nome de ConteudoDir.
  55. Acrescente no final do arquivo (“append”) do arquivo ConteudoDir a data atual (utilizando o comando date com redireção de saída).
  56. A partir do diretório do seu usuário, aplique um comando ls ao diretório /eetc (intencionalmente errado) redirecionando a saída de erro para o arquivo Erro.
  57. Copie o conteúdo do arquivo /etc/group para o arquivo grupos dentro do diretório aula22.
  58. Utilizando pipes, mostre apenas o dia da semana, mostrado no comando date.
  59. Quantos caracteres têm as cinco primeiras linhas do arquivo /etc/passwd.
  60. Quantas palavras têm as 8 ultimas linhas do arquivo /etc/protocols.
  61. Mostre as linhas de 6 a 10 do arquivo /etc/protocols.
  62. Mostre as 50 primeiras linhas do arquivo /etc/protocols na ordem alfabética inversa.
  63. Liste os processos que estão rodando, ondenando alfabeticamente inversa.
  64. Mostre as 10 últimas linhas do arquivo /etc/passwd na ordenado alfabeticamente.
  65. Mostre na tela quantos usuários estão logados no momento.
  66. Entre os processos que estão rodando, mostre os que possuem a string “usr”.
  67. Dentre as 30 primeiras linhas do arquivo /etc/protocols, mostre as linhas que possuem a string “protocol”.
  68. Dentre as 20 ultimas linhas do arquivo /etc/protocols, mostre as linhas que possuem a string “Protocol”.
  69. Mostre apenas as 5 ultimas linhas que possuem a string “Protocol” do arquivo /etc/protocols.
  70. Liste as 40 primeiras linhas do arquivo /etc/protocols, mostrando apenas as colunas do arquivo a partir do caractere #.
  71. Mostre apenas os primeiros 8 caracteres das 8 ultimas linhas do arquivo /etc/passwd.
  72. Dentre as 20 primeiras linhas do arquivo /etc/protocols, mostre as linhas que possuem a string “protocol”, na ordem alfabética invertida.
  73. Mostre quantas palavras possui entre as linhas de número 25 e 50 do arquivo /etc/protocols.
  74. Conte quantos caracteres possui os primeiros 2 campos das ultimas 5 linhas do arquivo /etc/protocols.
  75. Conte quantas linhas possuem a palavra “root” dentre os processos que estão rodando.
  76. Liste as linhas de 18 a 30 do arquivo /etc/protocols, mostrando apenas as colunas do arquivo antes do caracter #, em ordem alfabética inversa.
  77. Liste apenas os 4 primeiros processos que estão rodando que possuem a string “usr” em ordem alfabética inversa.

Gabarito aproximado

Aula 5 - 8/8/14: Editor VI

(Material de Apoio)

Objetivo: Familiarização com o editor e ser capaz de executar comandos simples, porém úteis para manipulação de arquivos.

Este roteiro não é para entregar, mas é para fazer e guardar consigo, pois poderá servir de consulta para exercícios futuros, e as provas serão baseadas naquilo feito em sala de aula.

  1. Crie um arquivo com o editor VI com o nome de poema.txt, e que dentro dele esteja o texto abaixo:

Desejo que você Não tenha medo da vida, tenha medo de não vivê-la. Não há céu sem tempestades, nem caminhos sem acidentes. Só é digno do pódio quem usa as derrotas para alcançá-lo. Só é digno da sabedoria quem usa as lágrimas para irrigá-la. Os frágeis usam a força; os fortes, a inteligência. Seja um sonhador, mas una seus sonhos com disciplina, Pois sonhos sem disciplina produzem pessoas frustradas. Seja um debatedor de ideias. Lute pelo que você ama.</syntaxhighlight>

  1. Salve o arquivo e saia do editor.
  2. Copie o arquivo do item anterior com o nome editadoPoema.txt.
  3. Entre no arquivo editadoPoema.txt, e saia sem salvar.
  4. Entre novamente no arquivo editadoPoema.txt, e no modo insert, faça uma alteração qualquer (Ex: deixe duas linhas em branco no início do arquivo). Saia do editor sem salvar a alteração feita.
  5. Entre no arquivo editadoPoema.txt, copie todo o poema e cole logo abaixo, sem deixar espaço entre os textos, utilizando os comandos nyy e p. Salve e saia do editor.
  6. Entre no arquivo editadoPoema.txt e exclua as 2 primeiras linhas. Desfaça a alteração, salve e saia do editor.
  7. Entre no arquivo editadoPoema.txt e exclua as 9 primeiras linhas. Salve as alterações e saia do editor.
  8. Entre no arquivo poema.txt e procure pela palavra sonhos, utilizando o comando /palavra_procurada. Navegando pela pesquisa com o comando n, responda quantas ocorrências dessa palavra existem no texto?
  9. No modo last line, substitua a palavra produzem por geram do arquivo poema.txt.
  10. No arquivo poema.txt, substitua todas as ocorrências da palavra digno por DIGNO.
  11. No arquivo editatoPoema.txt, copie todo o texto e cole 3 vezes, um embaixo do outro. Salve e saia do editor.
  12. Com o comando grep, procure pela palavra sonhos no arquivo do item acima. Em quantas linhas esta palavra aparece?
  13. Utilize o comando head para visualizar o começo do texto do arquivo editadoPoema.txt.
  14. Com o comando tail visualize o final do texto do arquivo editadoPoema.txt.
  15. No arquivo editadoPoema.txt, utilizando o comando sed substitua a palavra disciplina por DISCIPLINA. Em seguida, visualize o conteúdo do arquivo e responda: as alterações feitas pelo comando foram salvas no arquivo?
  16. Com o comando sort, ordene alfabeticamente o texto do arquivo editadoPoema.txt e redirecione a saída deste comando para um novo arquivo, chamado de poemaOrdenado.txt.
  17. Quantas linhas possui o arquivo poemaOrdenado.txt?
  18. Entre no arquivo editadoPoema.txt e insira o conteúdo do arquivo poemaOrdenado.txt logo abaixo do texto que ele já contém.
  19. Entre no arquivo poema.txt e salve-o com outro nome.
Aula 6 - 11/8/14: Lógica de Programação

Introdução à Lógica de Programação Introdução ao Shell (Slides Prof. Gustavo Introdução ao Shell, Slides Prof. Glauco Introdução ao Shell).

Objetivo: Criar um script Shell com comandos básicos e que seja capaz de executar tarefas simples.

Este roteiro não é para entregar, mas é para fazer e guardar consigo, pois poderá servir de consulta para exercícios futuros, e as provas serão baseadas naquilo feito em sala de aula.

ROTEIRO:

  1. Crie um arquivo com o editor VI com o nome primeiroScript.sh. Este arquivo/script deve estar dentro da sua pasta turma.
  2. Coloque na primeira linha do arquivo, criado no item anterior, #!/bin/bash para que o sistema saiba que é o SHELL que deve interpretar os comandos a seguir.
  3. Crie três variáveis e atribua valores a elas (podem ser variáveis numéricas ou strings, você escolhe!).
  4. Agora, com o comando echo imprima na tela uma frase, e que no meio da frase as variáveis do item anterior sejam chamadas (Você pode escolher qualquer frase que faça sentido junto com as variáveis escolhidas!). Ex: As variáveis são: nome=”juliana”; idade=23; disciplina=”ARC”. A frase escolhida foi: Meu nome é juliana, tenho 23 anos e frequento a disciplina de ARC.
  5. Salve o script e saia do editor.
  6. De permissão de execução primeiroScript.sh para o script com o comando chmod +x primeiroScript.sh.
  7. Execute o script, observe se a saída dele era a saída que você esperava (se caso não for, verifique qual o erro do script).
  8. Crie um outro scritp, também dentro de sua pasta turma, agora com o nome criaDiretorios.sh. Este script deve receber dois parâmetros (que serão os diretórios criados): santaCatarina e florianopolis. A partir dos parâmetros passados o seu script deve fazer:
    1. criar um diretório com o nome do primeiro parâmetro;
    2. criar um subdiretorio, dentro do primeiro criado acima, com o nome do segundo parâmetro;
    3. mover o arquivo primeiroSript.sh para dentro do subdiretório com o nome do segundo parâmetro;
    4. listar o diretório acima para checar se o arquivo foi movido para o lugar correto;
    5. Imprimir na tela frases que digam o que está sendo feito no script (úteis para debugs de programas.).
  9. Com o script feito, salve, saia do editor e execute-o. (Lembre-se de dar permissão de

execução.

Exercícios de fixação / Desafios

Exercício / Desafio 1
  • Partindo do princípio que você já se familiarizou com o sistema Linux e possui alguns conhecimentos sobre o editor vi.
  1. Procure na Internet como executar uma tarefa periodicamente no Linux, em específico Ubuntu.
  2. Após descobrir a resposta, faça um Shell script para que a cada minuto, seja escrita a saída da última linha dos comandos abaixo, no arquivo com o seguinte nome: monitorSaidaLog.txt e deve ser armazenado na pasta ~/meusLogs

Crie os arquivos abaixo na pasta ~/meusLogs e preencha com conteúdo aleatório.

tail -n 1 ~/meusLogs/arq1
tail -n 1 ~/meusLogs/outroArq
tail -n 1 ~/meusLogs/mensagens

A saída dos comandos devem ser colocados em variáveis e só então redirecionados para o arquivo.

Ex.: VAR1=` comando a ser executado` 
Ex.: VAR2=`...` 

Para acessar uma variável utiliza o caracter $

Ex.: echo $VAR1

Sendo que, você irá identificar a cada chamada do script, em qual dia, mês, ano, hora, minuto e segundo o script foi chamado e colocar no topo de cada saída gerada a seguinte informação: Log gerado em: 07-08-2014_17:25:36, olhar exemplo no final do exercício.

Dicas: você irá utilizar o comando 'date' para gerar a saída no formato desejado e redirecionar a saída para o arquivo em questão com >>.

O arquivo monitorSaidaLog.txt deve estar em ~/meusLogs/monitorSaidaLog.txt, ou seja, dentro do home do usuário criar a pasta meusLogs e redirecionar a saída do script para lá...


Significado do formato desejado para utilizar com o comando 'date':

d-m-Y_HMS
d = dia atual, 0-31
m = mês atual, 1-12
Y = ano atual, 1900 - hoje
H = hora atual, 0-23
M = minuto atual, 0-59
S = segundo atual, 0-59


Exemplo do conteúdo do arquivo monitorSaidaLog.txt

Log gerado em:  07-08-2014_17:25:36
Aug 7 17:13:22 wrl -- MARK --
Aug 7 13:15:01 wrl kernel: [ 111.330006] eth0: no IPv6 routers present
Aug 7 16:13:42 wrl su[8856]: + /dev/pts/1 worm:root
Log gerado em:  07-08-2014_17:26:34
Aug 7 17:13:22 wrl -- MARK --
Aug 7 13:15:01 wrl kernel: [ 111.330006] eth0: no IPv6 routers present
Aug 7 16:13:42 wrl su[8856]: + /dev/pts/1 worm:root


Logo após tudo feito, vamos testar. Para testar utilize o comando tail -f e monitore o arquivo monitorSaidaLog.txt

Se tudo correr bem, a cada 60 segundos, o arquivo deve ser incrementado com o novo conteúdo.