Mudanças entre as edições de "ARC60808-2014-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 875: Linha 875:
 
Para testar acesse o navegador e entre com o endereço abaixo, subtituindo o xxx pelo seu ip:
 
Para testar acesse o navegador e entre com o endereço abaixo, subtituindo o xxx pelo seu ip:
 
  ftp://192.168.2.xxx
 
  ftp://192.168.2.xxx
 +
 +
Logo após acessar usando o navegador, crie o usuário ftp e tente acessar novamente, o que aconteceu?
 +
Lembrando que é necessário reiniciar o proftpd.
  
 
Agora faça o acesso via terminal através do comando ftp.
 
Agora faça o acesso via terminal através do comando ftp.
Linha 885: Linha 888:
 
Ao final do processo compartilhe seu ip com seus colegas.
 
Ao final do processo compartilhe seu ip com seus colegas.
 
Crie um arquivo e renomeie com o seu nome completo.
 
Crie um arquivo e renomeie com o seu nome completo.
Tente enviar o arquivo com seu para um colega através do terminal.
+
Tente enviar o arquivo com seu nome para um colega através do terminal.
 
  $put TulioAlbertonRibeiro.txt
 
  $put TulioAlbertonRibeiro.txt
  

Edição das 15h12min de 1 de setembro de 2014

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. Não apresenta todas as funcionalidades do shell normal.

Site para treinar desenvolvimento de shell scripts.

Cronograma de atividades

Diário de aulas proposto
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. 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
Aula 11 - 22/8/14: Dúvidas e Festival de Música
Aula 12 - 25/8/14: Usuários e grupos

Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional. Apostila, páginas 61 a 65.

Slides Aula Tulio: Slides Aula Usuários, Grupos e Permissões

Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações:

  • Nome de usuário (ou login): um apelido que identifica o usuário no sistema
  • UID (User Identifier): um número único que identifica o usuário
  • GID (Group Identifier): o número do grupo primário do usuário
  • Senha (password): senha para verificação de acesso
  • Nome completo (full name): nome completo do usuário
  • Diretório inicial (homedir): o subddiretório pessoal do usuário, onde ele é colocado ao entrar no sistema
  • Shell: o programa a ser executado quando o usuário entrar no sistema

As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de bases de dados de usuários). Dentre elas, a mais simples é composta pelo arquivo /etc/passwd:

root:x:0:0:root:/root:/bin/bash
sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false
suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash

Acima um exemplo de arquivo /etc/passwd

Cada linha desse arquivo define uma conta de usuário no seguinte formato:

nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell

O campo senha em /etc/passwd pode assumir os valores:

  • x: significa que a senha se encontra em /etc/shadow
  • *: significa que a conta está bloqueada
  • senha encriptada: a senha de fato, porém encriptada usando algoritmo hash MD5 ou crypt. Porém usualmente a senha fica armazenada no arquivo /etc/shadow.

O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:

  • Nome de usuário
  • Senha encriptada (sobrepõe a senha que porventura exista em /etc/passwd)
  • Data da última modificação da senha
  • Dias até que a senha possa ser modificada (validade mínima da senha)
  • Dias após que a senha deve ser modificada
  • Dias antes da expiração da senha em que o usuário deve ser alertado
  • Dias após a expiração da senha em que a conta é desabilitada
  • Data em que a conta foi desabilitada

Um exemplo do arquivo /etc/shadow segue abaixo:

root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922::::::
suse-ncc:!:13922:0:99999:7:::
uucp:*:13922::::::
wwwrun:*:13922::::::
roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7:::

Exercício: quando a senha do usuário roberto irá expirar ?

Um grupo é um conjunto de usuários definido da seguinte forma:

  • Nome de group (group name): o nome que identifica o grupo no sistema
  • GID (Group Identifier): um número único que identifica o grupo
  • Lista de usuários: um conjunto de usuários que são membros do grupo

Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo /etc/group a mais simples delas:

root:x:0:
trusted:x:42:
tty:x:5:
utmp:x:22:
uucp:x:14:
video:x:33:roberto
www:x:8:roberto
users:x:100:
radiusd:!:108:
vboxusers:!:1000:

Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em /etc/passwd), ou que aparecem listados em /etc/group.

Gerenciamento de usuários e grupos

Para gerenciar usuários e grupos podem-se editar diretamente os arquivos /etc/passwd, /etc/shadow e /etc/group, porém existem utilitários que facilitam essa tarefa:

  • useradd ou adduser: adiciona um usuário
    • Ex: useradd -m roberto : cria o usuário roberto juntamente com o diretório (-m --makedir).
    • Ex: useradd -c "Roberto de Matos" -m roberto : cria o usuário roberto com nome completo "Roberto de Matos"
    • Ex: useradd -c "Roberto de Matos" -g users -m -d /usuarios/roberto -s /bin/tcsh roberto : cria o usuário roberto com nome completo "Roberto de Matos", grupo users, diretório inicial /usuarios/roberto e shell /bin/tcsh
  • userdel: remove um usuário
    • Ex: userdel roberto : remove o usuário roberto, porém preservando seu diretório home
    • Ex: userdel -r roberto : remove o usuário roberto, incluindo seu diretório home
  • usermod: modifica as informações da conta de um usuário
    • Ex: usermod -g wheel roberto : modifica o GID do usuário roberto
    • Ex: usermod -G users,wheel roberto : modifica os grupos secundários do usuário roberto
    • Ex: usermod -d /contas/roberto roberto : modifica o diretório inicial do usuário roberto (mas não copia os arquivos ...)
    • Ex: usermod -l robertomatos roberto : modifica o login do usuário roberto
    • Ex: usermod -m ... : cria o diretório home do usuário roberto
    • Ex: usermod -c "Roberto Matos, R. dos Navegantes, 33333333" : atribui comentários ao usuário roberto
  • passwd: modifica a senha de usuário
    • Ex: passwd roberto
  • login: logo como outro usuário. Tem de estar como root
    • Ex: login roberto
  • groupadd: adiciona um grupo
    • Ex: groupadd ger: cria o grupo ger
  • groupdel: remove um grupo
    • Ex: groupdel ger: remove o grupo ger

Esses utilitários usam os arquivos /etc/login.defs e /etc/default/useradd para obter seus parâmetros padrão. O /etc/adduser.conf tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando adduser. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é:

MAIL_DIR dir # Diretório de e-mail
PASS_MAX_DAYS	99999 #Número de dias até que a senha expire
PASS_MIN_DAYS	0 #Número mínimo de dias entre duas trocas senha
PASS_MIN_LEN 5	#Número mínimo de caracteres para composição da senha
PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha
UID_MIN 500 #Número mínimo para UID
UID_MAX 60000 #Número máximo para UID
GID_MIN 500 #Número mínimo para GID
GID_MAX 60000 #Número máximo para GID
CREATE_HOME yes #Criar ou não o diretório home

Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é:

GROUP=100 #GID primário para os usuários criados 
HOME=/home #Diretório a partir do qual serão criados os “homes”
INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada
EXPIRE=AAAA/MM/DD #Dia da expiração da conta
SHEL=/bin/bash #Shell atribuído ao usuário.
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
GROUPS=video,dialout
CREATE_MAIL_SPOOL=no

O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser:

DSHELL=/bin/bash #Shell atribuído ao usuário.
DHOME=/home #Diretório a partir do qual serão criados os “homes”
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
FIRST_UID=1000 #Número mínimo para UID
LAST_UID=29999 #Número máximo para UID
FIRST_GID=1000 #Número mínimo para GID
LAST_GID=29999 #Número máximo para GID
QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado.

Atividade

Obs.: Na máquina virtual (ARC-2-servidor) é possível ter vários usuários logados simultaneamente, para isto basta logar o primeiro usuário (aluno) normalmente e, para os demais usuários, abrir novos terminais com as teclas: <Alt> + <F2>, <Alt> + <F3>, <Alt> + <F4> .... Para retornar a um dos usuários logados basta digitar o conjunto de teclas (<Alt> + <F?>) do respectivo usuário.

  1. Crie o grupo turma.
  2. Crie o diretório /home/contas.
  3. Copie dos arquivos /etc/login.defs, /etc/default/useradd e /etc/adduser.conf para o /home/aluno.
  4. Modificando os arquivos /etc/login.defs, /etc/default/useradd e/ou /etc/adduser.conf, faça com que os usuários sejam criados com o seguinte perfil, por padrão:
    1. O diretório home dos usuários seja /home/contas;
    2. Expiração de senha em 15 dias a partir da criação da conta;
    3. Usuário possa alterar senha a qualquer momento;
    4. Data do bloqueio da conta em 7 dias após a expiração da senha.
    5. Inicie os avisos de expiração da senha 4 dia antes de expirar.
    6. Iniciar a numeração de usuários (ID) a partir de 1500.
  5. Crie um usuário com o nome de manoel, pertencente ao grupo turma.
  6. Dê ao usuário manoel a senha mane123.
  7. Acrescente ao perfil do usuário seu nome completo e endereço: Manoel da Silva, R. dos Pinheiros, 2476666.
  8. Verifique o arquivo /etc/passwd.
  9. Mude, por comandos, o diretório home do manoel de /home/contas/manoel para /home/manoel.
  10. Mude o login do manoel para manoelsilva.
  11. Logue como manoelsilva.
  12. Recomponha os arquivos originais do item 3.
Aula 13 - 27/8/14: Primeira avaliação
Aula 14 - 29/8/14: Permissões

Há uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa.

Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O super-usuário (root), entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos.

O conjunto de permissões é dividido em três classes: proprietário, grupo e usuários. Um grupo pode conter pessoas do mesmo departamento ou quem está trabalhando junto em um projeto. Os usuários que pertencem ao mesmo grupo recebem o mesmo número do grupo (também chamado de Group Id ou GID). Este número é armazenado no arquivo /etc/passwd junto com outras informações de identificação sobre cada usuário. O arquivo /etc/group contém informações de controle sobre todos os grupos do sistema. Assim, pode -se dar permissões de acesso diferentes para cada uma destas três classes.

Quando se executa ls -l em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte:

> ls -l
total 403196
drwxr-xr-x 4 odilson admin 4096 Abr 2 14:48 BrOffice_2.1_Intalacao_Windows/
-rw-r--r-- 1 luizp admin 113811828 Out 31 21:28 broffice.org.2.0.4.rpm.tar.bz2
-rw-r--r-- 1 root root 117324614 Dez 27 14:47 broffice.org.2.1.0.rpm.tar.bz2
-rw-r--r-- 1 luizp admin 90390186 Out 31 22:04 BrOo_2.0.4_Win32Intel_install_pt-BR.exe
-rw-r--r-- 1 root root 91327615 Jan 5 21:27 BrOo_2.1.0_070105_Win32Intel_install_pt-BR.exe
>

As colunas que aparecem na listagem são:

  1. Esquema de permissões;
  2. Número de ligações do arquivo;
  3. Nome do usuário dono do arquivo;
  4. Nome do grupo associado ao arquivo;
  5. Tamanho do arquivo, em bytes;
  6. Mês da criação do arquivo; Dia da criação do arquivo;
  7. Hora da criação do arquivo;
  8. Nome do arquivo;

O esquema de permissões está dividido em 10 colunas, que indicam se o arquivo é um diretório ou não (coluna 1), e o modo de acesso permitido para o proprietário (colunas 2, 3 e 4), para o grupo (colunas 5, 6 e 7) e para os demais usuários (colunas 8, 9 e 10).

Existem três modos distintos de permissão de acesso: leitura (read), escrita (write) e execução (execute). A cada classe de usuários você pode atribuir um conjunto diferente de permissões de acesso. Por exemplo, atribuir permissão de acesso irrestrito (de leitura, escrita e execução) para você mesmo, apenas de leitura para seus colegas, que estão no mesmo grupo que você, e nenhum acesso aos demais usuários. A permissão de execução somente se aplica a arquivos que podem ser executados, obviamente, como programas já compilados ou script shell. Os valores válidos para cada uma das colunas são os seguintes:

  • 1 d se o arquivo for um diretório; -se for um arquivo comum;
  • 2,5,8 r se existe permissão de leitura; - caso contrário;
  • 3,6,9 w se existe permissão de alteração; - caso contrário;
  • 4,7,10 x se existe permissão de execução; - caso contrário;

A permissão de acesso a um diretório tem outras considerações. As permissões de um diretório podem afetar a disposição final das permissões de um arquivo. Por exemplo, se o diretório dá permissão de gravação a todos os usuários, os arquivos dentro do diretório podem ser removidos, mesmo que esses arquivos não tenham permissão de leitura, gravação ou execução para o usuário. Quando a permissão de execução é definida para um diretório, ela permite que se pesquise ou liste o conteúdo do diretório.

A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários:

  • chmod: muda as permissões de acesso (também chamado de modo de acesso). Somente pode ser executado pelo dono do arquivo ou pelo superusuário
    • Ex: chmod +x /home/usuario/programa : adiciona para todos os usuários a permissão de execução ao arquivo /home/usuario/programa
    • Ex: chmod -w /home/usuario/programa : remove para todos os usuários a permissão de escrita do arquivo /home/usuario/programa
    • Ex: chmod o-rwx /home/usuario/programa : remove todas as permissões de acesso ao arquivo /home/usuario/programa para todos os usuários que não o proprietário e membros do grupo proprietário
    • Ex: chmod 755 /home/usuario/programa : define as permissões rwxr-xr-x para o arquivo /home/usuario/programa
  • chown: muda o proprietário de um arquivo. Somente pode ser executado pelo superusuário.
    • Ex: chown roberto /home/usuario/programa: faz com que o usuário roberto seja o dono do arquivo
  • chgrp: muda o grupo dono de um arquivo. Somente pode ser executado pelo superusuário.
    • Ex: chgrp users /home/usuario/programa: faz com que o grupo users seja o grupo dono do arquivo /home/usuario/programa

Há também o utilitário umask, que define as permissões default para os novos arquivos e diretórios que um usuário criar. Esse utilitário define uma máscara (em octal) usada para indicar que permissões devem ser removidas. Exemplos:

  • umask 022: tira a permissão de escrita para group e demais usuários
  • umask 027: tira a permissão de escrita para group, e todas as permissões para demais usuários

Atividade

  1. Crie a partir do /home 3 diretórios, um com nome aln (aluno), outro prf (professor) e o último svd (servidor).
  2. Crie 3 grupos com os mesmos nomes acima.
  3. Crie 3 contas de usuários pertencentes ao grupo aln: aluno1, aluno2, aluno3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/aln/. Por exemplo para o aluno1 teremos /home/aln/aluno1.
  4. Crie 3 contas pertencentes ao grupo prf: prof1, prof2, prof3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/prf/.
  5. Crie 3 contas pertencentes ao grupo svd: serv1, serv2, serv3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/svd/.
  6. Os diretórios dos alunos, e todo o seu conteúdo, devem ser visíveis e editáveis aos membros do próprio grupo, visíveis mas não apagáveis a todos os demais usuários da rede.
  7. Já os diretórios dos professores e servidores, devem ser mutuamente visíveis, mas não apagáveis, entre os membros dos grupos professores e servidores mas não deve ser sequer visível aos membros do grupo alunos.
Aula 15 (1/09/2014): Instalação de Pacotes

Slide). Página oficial do apt-get

  1. Com o --help veja quais as opções possíveis que o apt-get fornece.
  2. Sincronize o sistema.
  3. Atualize as versões de todos os pacotes instalados no sistema.
  4. Com o apt-cache search procure por sudoku, escolha o sudoku (nenhum outro) e instale-o. Após a instalação execute o programa instalado (digite o nome do pacote instalado) e veja se foi instalado corretamente (se rodou).
  5. Remova o programa instalado no item anterior. Confira se ele realmente foi removido.
Aula 16 (3/09/2014): Sistema de arquivos

Gerência de Redes páginas 51 a 57. (Slide Prof. Glauco [1])

cfdisk: aplicativo para particionamento de discos. Ex: cfdisk /dev/sdb. Obs.: clique em Gravar ao final.

mkfs.ext4: formata uma determinada partição com o sistema de arquivos do tipo ext4. Ex: mkfs.ext4 /dev/sdb1.

mount: monta partição. Ex: mount /dev/sdb1 /dados.

umount: desmonta partição. Ex: umount /dados.

df: mostra as partições montadas e seus pontos (diretórios) de montagem. Ex: df -h

  1. Após inicializar a máquina virtual crie um snapshots (ícone no canto superior direito do VirtualBox). Isto criará uma imagem da máquina virtual, caso se cometa algum erro fatal na formatação de discos.
  2. Na máquina virtual use o cfdisk para particionar o disco /dev/sdb. Crie duas partições uma com tamanho de 300 MB e outra com tamanho 500 MB.
  3. Crie dois diretórios: /dados e /teste.
  4. Em /dados crie 2 arquivos: dados1 e dados2. Em /teste crie 2 arquivos: teste1 e teste2.
  5. Siga o roteiro da apostila para execução das próximas etapas (6, 7, 10 e 12).
  6. Formate as partições criadas com o sistema de arquivos ext4.
  7. Monte estas partições em /dados e /teste.
  8. Visualize o conteúdos destes diretórios. Onde estão os arquivos dados1, dados2, teste1 e teste2?
  9. Em /dados crie 2 arquivos: dados3 e dados4. Em /teste crie 2 arquivos: teste3 e teste4.
  10. Desmonte as partições.
  11. Visualize o conteúdos destes diretórios. Onde estão os arquivos dados3, dados4, teste3 e teste4?
  12. Configure o sistema para que sempre monte estas novas partições, a cada reboot. Teste.

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" 
Exercício / Desafio 3
Faça um shellScript que compacte todos arquivos passados como parâmetros (separadamente).
Seu script deve ter no máximo 5 linhas.
Utilize o gzip para compactar.
Exemplo de chamada do script: meuScriptCompactador.sh aqruivo1 outroArquivo file3 

Exercício / Desafio 4
Faça um shellScript que a partir de um arquivo de entrada, leia linha a linha desse arquivo
e retorne a média.

Exemplo Arquivo entrada:

João 7 8 9
Marcelo 6 8 10
Maria 5 9 8
Fernando 4 7 9

Exemplo saída esperada:

João 8
Marcelo 8
...

Dica, utilizar o comando awk.

Exercício / Desafio 5 - Calculadora

Faça um shellScript chamado calcular.sh que a partir de três parâmetros, faça o cálculo desejado, exemplo:

./calcular.sh valor1 + valor2
./calcular.sh 10 + 3 

Após fazer o cálculo o shellScript deve perguntar se o usuário quer fazer outra operação ou terminar.



Exercício / Instalação de Pacotes Manual

No diretório home baixar o programa de FTP proftpd:

$wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5.tar.gz

Verificar integridade do pacote:

$md5sum proftpd-1.3.5.tar.gz
aff1bff40e675244d72c4667f203e5bb  proftpd-1.3.5.tar.gz

Descompactar:

$tar -zxvf proftpd-1.3.5.tar.gz

Entrar no diretório:

$cd proftpd-1.3.5/
$./configure --prefix=/home/aluno/proftpd
$make
$sudo make install
$sudo /home/aluno/proftpd/sbin/proftpd

Edite o arquivo /home/aluno/proftpd/etc/proftpd.conf usando sudo.

Procure pela linha: "DefaultRoot ~" e descomente.

Para testar acesse o navegador e entre com o endereço abaixo, subtituindo o xxx pelo seu ip:

ftp://192.168.2.xxx

Logo após acessar usando o navegador, crie o usuário ftp e tente acessar novamente, o que aconteceu? Lembrando que é necessário reiniciar o proftpd.

Agora faça o acesso via terminal através do comando ftp.

$ftp 192.168.2.xxx
Entre com seu login e senha. 
Você pode navegar pelos arquivos. 
Digite help para ver os comandos existentes.
Para baixar e enviar arquivos use "get nomeDoArquivo" e "put nomeDoArquivo" respectivamente.

Ao final do processo compartilhe seu ip com seus colegas. Crie um arquivo e renomeie com o seu nome completo. Tente enviar o arquivo com seu nome para um colega através do terminal.

$put TulioAlbertonRibeiro.txt


Desafio:

Faça com que quando o usuário aluno acessar o sistema, ele somente consiga acessar a pasta
"~public_FTP"