ARC60808-2014-2

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
A versão imprimível não é mais suportada e pode ter erros de renderização. Atualize os favoritos do seu navegador e use a função de impressão padrão do navegador.

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

Material de Apoio

Site para treinar comandos básicos. Simula um terminal shell do Linux.

Site para trinar desenvolvimento de shell scripts.

Cronograma de atividades

Aula Data Horas Conteúdo Recursos
1 30/7 2 Apresentação da Disciplina Sala de Aula, projetor multimídia, wiki
2 1/8 2 Revisão comandos básicos em Linux Sala de Aula/Lab, Projetor Multimídia, máquinas virtuais
3 4/8 2 Revisão comandos básicos em Linux Lab, Projetor multimídia, máquinas virtuais
4 6/8 2 Revisão comandos básicos em Linux Lab, Projetor multimídia, máquinas virtuais
5 11/8 2 Editor VI Lab, Projetor multimídia, máquinas virtuais
6 13/8 2 Lógica de programação Lab, Projetor multimídia, máquinas virtuais
7 15/8 2 Shell Script lab, Projetor multimídia, máquinas virtuais
8 18/8 2 Shell Script lab, Projetor multimídia, máquinas virtuais
9 20/8 2 Exercícios: revisão e esclarecimento de dúvidas para a primeira avaliação. lab, Projetor multimídia, máquinas virtuais
10 22/8 2 Avaliação 1 lab, Projetor multimídia, máquinas virtuais
11 25/8 2 Administração de usuários e grupos. lab, Projetor multimídia, máquinas virtuais
12 27/8 2 Administração de usuários e grupos. lab, Projetor multimídia, máquinas virtuais
13 29/8 2 Permissão de acesso à arquivos. Realização do roteiro prático 06 para fixação do conteúdo. lab, Projetor multimídia, máquinas virtuais
14 1/9 2 Instalação de Programas. lab, Projetor multimídia, máquinas virtuais
15 3/9 2 Sistemas de Arquivos. lab, Projetor multimídia, máquinas virtuais
16 5/9 2 Sistemas de Arquivos. lab, Projetor multimídia, máquinas virtuais
17 8/9 2 Cotas em disco para usuários e grupos. lab, Projetor multimídia, máquinas virtuais
18 10/9 2 Agendamento de Tarefas. lab, Projetor multimídia, máquinas virtuais
19 12/9 2 Arquivos de registros de logs. lab, Projetor multimídia, máquinas virtuais
20 15/9 2 Políticas de backup. lab, Projetor multimídia, máquinas virtuais
21 17/9 2 Configuração de interface de rede. Lab, Projetor multimídia, máquinas virtuais
22 19/9 2 Ferramentas de caprura de pacotes. lab, Projetor multimídia, máquinas virtuais
23 22/9 2 Configuração de sub-redes. lab, Projetor multimídia, máquinas virtuais
24 24/9 2 NAT. lab, Projetor multimídia, máquinas virtuais
25 26/9 2 Exercícios. Revisão antes da avaliação e esclarecimento de dúvidas. lab, Projetor multimídia, máquinas virtuais
26 29/9 2 Avaliação 2. lab, Projetor multimídia, máquinas virtuais
27 1/10 2 DNS. lab, Projetor multimídia, máquinas virtuais
28 3/10 2 DNS. lab, Projetor multimídia, máquinas virtuais
29 6/10 2 Servidor correio eletrônico (Postfix). lab, Projetor multimídia, máquinas virtuais
30 8/10 2 Servidor correio eletrônico (Postfix). lab, Projetor multimídia, máquinas virtuais
31 10/10 2 Webmail (RoundCUbe). lab, Projetor multimídia, máquinas virtuais
32 13/10 2 Servidor web (Apache). lab, Projetor multimídia, máquinas virtuais
33 15/10 2 FTP. lab, Projetor multimídia, máquinas virtuais
34 17/10 2 SMB e NFS. lab, Projetor multimídia, máquinas virtuais
35 20/10 2 SMB e NFS. lab, Projetor multimídia, máquinas virtuais
36 22/10 2 DHCP. lab, Projetor multimídia, máquinas virtuais
37 24/10 2 Exercícios. Revisão antes da avaliação e esclarecimento de dúvidas. lab, Projetor multimídia, máquinas virtuais
38 27/10 2 Avaliação 3. lab, Projetor multimídia, máquinas virtuais
39 29/10 2 SSH. lab, Projetor multimídia, máquinas virtuais
40 31/10 2 Proxy/Cache (squid) lab, Projetor multimídia, máquinas virtuais
41 3/11 2 Proxy/Cache (squid) Lab, Projetor multimídia, máquinas virtuais
42 5/11 2 Firewall com iptables Lab, Projetor multimídia, máquinas virtuais
43 7/11 2 Firewall com iptables Lab, Projetor multimídia, máquinas virtuais
44 10/11 2 VPN. Lab, Projetor multimídia, máquinas virtuais
45 12/11 2 Exercícios. Revisão antes da avaliação e esclarecimento de dúvidas. Lab, Projetor multimídia, máquinas virtuais
46 14/11 2 Avaliação 4. Lab, Projetor multimídia, máquinas virtuais
47 17/11 2 Projeto Integrador
48 19/11 2 Projeto Integrador
49 21/11 2 Projeto Integrador
50 24/11 2 Projeto Integrador
51 26/11 2 Projeto Integrador
52 28/11 2 Projeto Integrador
53 1/12 2 Projeto Integrador
54 3/12 2 Projeto Integrador
55 5/12 2 Projeto Integrador
56 8/12 2 Projeto Integrador
57 10/12 2 Projeto Integrador
58 12/12 2 Projeto Integrador
59 15/12 2 Projeto Integrador
TOTAL 118

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 ) ( Slides Aula Introdução ao Linux Tulio.)

  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.

Gabarito 1 vi poema.txt editar texto ESC :wq ==> salva e sai 2 cp poema.txt editadoPoema.txt 3 ESC :q 4 ESC :q! 5 ESC 20yy ==> copia 20 linhas ESC G ==> vai ao final do arquivo ESC p ==> cola o texto 6 ESC 2dd ==> apaga 2 linhas ESC u ==> desfaz (undo) o último comando ESC wq! 7 ESC 9dd ESC wq! 8 ESC /sonhos 9 ESC :s/produzem/geram 10 ESC :%s/digno/DIGNO/g 11 ESC 30yy ESC p ESC p ESC p ESC wq 12 grep sonhos editadoPoema.txt | wc -l 13 head editadoPoema.txt 14 tail editadoPoema.txt 15 sed 's/disciplina/DISCIPLINA/g' Não sed -i 's/disciplina/DISCIPLINA/g' Sim 16 sort editadoPoema.txt > poemaOrdenado.txt 17 wc -l poemaOrdenado.txt 18 vi editadoPoema.txt ESC :r poemaOrdenado.txt 19 vi poema.txt ESC w outroNome.txt </syntaxhighlight>

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. 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).

Gabarito:

  1. !/bin/bash
echo Entre com o nome do primeiro diretorio a ser criado:
read dir1
echo Entre com o nome do segundo diretorio a ser criado:
read dir2
echo criando diretorio $dir1
mkdir $dir1
echo criando diretorio $dir2 dentro do $dir1
mkdir $dir1/$dir2
echo movendo script para o $dir2
mv primeiroSript.sh $dir1/$dir2
echo listando o conteudo do $dir1/$dir2
echo `ls $dir1/$dir2` </syntaxhighlight>
Aula 7,8,9 - 13,15,18/8/14: Shell Script

Objetivo: Ser capaz de implementar as estruturas de teste if, while e for, para a execução de tarefas simples no Linux.

ROTEIRO:

  1. Crie um script, dentro da pasta turma, com o nome de comparador.sh. Este script deve receber 2 valores (números) como parâmetro. Os números devem ser passados juntos com a chamado do script, por exemplo: comaparador.sh 4 5. O script deve compará-los e retornar na tela se:
    1. o parâmetro $1 é maior que o parâmetro $2;
    2. o parâmetro $1 é igual ao parâmetro $2;
    3. o parâmetro $1 é menor do que o parâmetro $2.
  2. Após terminar o script, lembrando de verificar se todas as hipóteses estão funcionando corretamente.
  3. Modifique o script 1 de tal modo que agora ele, depois de rodar, peça os valores das variáveis com perguntas feitas no terminal, por exemplo: entre com o valor da variável 1 .
  4. Crie um outro script, com o nome zerador.sh. Este script deve receber como parâmetro um número qualquer, e o script deve subtrair uma unidade por vez deste valor, até que chegue a zero. Faça também que os valores sejam impressos na tela a cada interação, ou seja, até chegar a zero.
  5. Crie um último scritp, também dentro de sua pasta turma, agora com o nome criaNDiretorios.sh. Este script deve criar quantos diretórios que você deseja, sem que seja executado comando por comando, ou seja, um único comando é executado, mas ele se repete quantas vezes for necessário. Os diretorios devem ser chamados: diretorio1 diretorio2 diretorio3 … e assim por diante até o número que você escolheu.

Gabarito Ex. 3:

  1. !/bin/bash

echo "Entre com o primeiro valor ==> " read val1 echo "Entre com o segundo valor ==> " read val2 if [ $val1 -gt $val2 ] then echo "Primeiro valor é MAIOR que o segundo" fi if [ $val1 -lt $val2 ] then echo "Primeiro valor é MENOR que o segundo" fi if [ $val1 -eq $val2 ] then echo "Os valores são IGUAIS"; fi </syntaxhighlight>

Gabarito Ex. 4: baseado no comando FOR


  1. !/bin/bash

a=$1 for i in `seq 0 $1` do echo $a let a=$a-1 done </syntaxhighlight>

Gabarito Ex. 4: baseado no comando WHILE

  1. !/bin/bash

a=$1 while test $a -gt 0 do echo $a let a=$a-1 done </syntaxhighlight>

Gabarito Ex. 4: Solução do Tiago Mayer

  1. !/bin/bash
  2. zerador.sh

if [ $# -lt 1 ] then echo "Insira um número e tente novamente." else

       echo "Contando até zero a partir de $1"
       echo
       echo $1
       echo
       valor=$1
       if [ $valor -gt 0 ]
       then
               while [ $valor -gt 0 ]
               do
               valor=$((valor-1))
               echo $valor
               echo
               done
       else
               while [ $valor -lt 0 ]
               do
               valor=$((valor+1))
               echo $valor
               echo
               done
       fi

fi </syntaxhighlight>

Gabarito Ex. 5:

  1. !/bin/bash

echo Entre com a quantidade de diretórios read qtde echo Entre com o nome dos diretórios read nome for i in $(seq $qtde) do echo criando o diretório $nome$i ... mkdir $nome$i done ls -l </syntaxhighlight>

Exemplo de comandos Script: Comandos.sh.zip

Aula 10 - 20/8/14: Dúvidas e preparação para avaliaçã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
head -n 1 ~/meusLogs/outroArq
ls -lat ~/meusLogs/

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.


Possível resolução do exercício: Media:scriptLogMonitors.sh.zip


Exercício / Desafio 2

Fazer um Script com o nome scriptBackupDir.sh para gerar o backup de um diretório.

O script de backup deve ser executado a cada 2 minutos.

Você deve salvar informações sobre o backup em um arquivo de log.

Você deve a cada nova execução, se tudo correr bem, apagar o penúltimo backup feito, de tal forma que só o último backup gerado permaneça salvo.

Você deve solicitar ao usuário de qual diretório deve ser feito backup.


Algumas variáveis que serão padrão:

read DIR_BKP_NOME #ou através de parâmetros

A variável DIR_BKP_NOME deve ser colocada no topo do script, na primeira linha.

diretório de destino do backup.

DIR_DEST="~/Backup_Dir/"

nome do backup com esse formato:

BKP_NOME=15-08-2014-12-47-22.tar.gz"
echo "Backup salvo em:" 
NOME_SALVAR=
echo $NOME_SALVAR 

colocar lógica aqui...


Comandos que você irá usar.

tar -cvvzf $NOME_SALVAR $DIR_BKP_NOME > /dev/null 2> /dev/null
REMOVE_LAST=`cat $DIR_DEST"NomeArquivoLog.log"` 
echo $VAR_COM_NOME_COMPLETO > $DIR_DEST"NomeArquivoLog.log"