Shell: mudanças entre as edições

De Eriberto Wiki
Ir para navegação Ir para pesquisar
Sem resumo de edição
Linha 59: Linha 59:
==== Parte 7 ====
==== Parte 7 ====
'''[http://lintian.debian.org/tags/hardening-no-fortify-functions.html Neste site] há uma relação de pacotes que possuem problemas de hardening no Debian. [http://wnpp.debian.net Neste outro site] é possivel obter uma lista de pacotes órfãos. Faça uma relação dos pacotes órfãos que possuem problemas de hardening.'''
'''[http://lintian.debian.org/tags/hardening-no-fortify-functions.html Neste site] há uma relação de pacotes que possuem problemas de hardening no Debian. [http://wnpp.debian.net Neste outro site] é possivel obter uma lista de pacotes órfãos. Faça uma relação dos pacotes órfãos que possuem problemas de hardening.'''
<br><br>
==== Parte 8 ====
Crie um script que faça o seguinte:
* Gere um número inteiro aleatório entre 1 e 100 e que dê ao usuário 10 chances para que o mesmo adivinhe tal número.
* Deverá haver mensagens de erro caso:
** O usuário não escolha um número, mas sim outro caractere qualquer. Utilize uma função para fazer essa validação.
** O usuário escolha um número fora do range. Utilize uma função para fazer essa validação.
** O usuário escolha um número não inteiro. Utilize uma função para fazer essa validação.
* Sempre imprima na tela: "O número escolhido por você é maior/menor do que o escolhido por mim. Restam x tentativas".
* No caso de acerto, escreva na tela em amarelo: você acertou.
* No caso de erro após as 10 tentativas, escreva na tela em vermelho: você errou.
<br><br>
==== Parte 9 ====
Crie um script que faça o seguinte:
* Verifique se existe o arquivo /etc/bash.bashrc.
* Caso não exista, utilize uma função para escrever uma mensagem sobre isso no log /var/log/syslog e termine a execução do script. Também deverá haver uma mensagem (a mesma) para o usuário na sua tela (via função).
* Caso exista, verifique se há a linha "alias ls='ls --color=auto'".
** Havendo, escreva no log e na tela do usuário, via função, "nada a fazer, saindo.".
** Não havendo, escreva no log e na tela do usuário, via função, "adicionado alias para o comando ls".
<br><br>
<br><br>

Edição das 10h08min de 14 de agosto de 2017



Nesta página, alguns exercícios sobre scripts em shell Bash.



by (C) João Eriberto Mota Filho <eriberto (a) eriberto pro br>

Artigo criado em: 04 de setembro de 2012.

Última atualização: veja o rodapé desta página.

Tiny URL ou bit.ly: http://bit.ly/shellbash



Esta página está também disponível pela URL http://eriberto.pro.br/shell.

Exercícios de fixação

Os exercícios a seguir contêm questões que fixam os conhecimentos adquiridos em sala de aula, principalmente em cursos de pós-graduação.

Utilize o Canivete Suíço do Shell Bash, disponível em http://aurelio.net/shell/canivete, como auxiliar para resolver as questões.


Parte 1

Resolva as questões a seguir, todas baseadas no arquivo arq1.txt.

  1. Quantas linhas o arquivo possui?
  2. Quais números estão repetidos?
  3. Quantos números não estão repetidos?
  4. Quantos números não possuem o algarismo 9?
  5. Substitua todos os algarismos 8 por 0 e apague todos os algarismos 5.
  6. Depois da operação anterior, quais números ficam triplicados?
  7. Qual é a soma de todos os números?



Parte 2

Resolva as questões a seguir, todas baseadas no arquivo arq2.tar.bz2.

  1. Quais arquivos possuem o mesmo conteúdo? (dica: use hash md5)?
  2. Quantas linhas, no total, possuem todos os arquivos juntos?
  3. Quantas linhas começam com “E” e terminam com “O”?



Parte 3

Resolva as questões a seguir, todas baseadas no arquivo arq3.gz.

  1. Quantos nomes diferentes de pessoas aparecem nos logs?
  2. Quantas perdas de conexão ocorreram entre 12:08 e 12:13 (incluindo os dois horários)?
  3. Altere todos os nomes “renata” para “luciana”, apenas nas linhas nas quais houver perda de conexão.
  4. Crie um novo arquivo, invertendo a posição do horário com a posição do nome do usuário.



Parte 4

Resolva as questões a seguir, todas baseadas no arquivo arq4.txt.gz.

  1. Quantas vezes o nome “eriberto”, não importando a caixa dos caracteres, aparece no interior do arquivo?
  2. Quantas sentenças de 5 caracteres alfanuméricos aparecem no arquivo?
  3. Faça com que todos os caracteres existentes no arquivo sejam apresentados em caixa baixa.



Parte 5

Resolva as questões a seguir, todas baseadas no arquivo chapeuzinho_vermelho_na_imprensa.txt.gz.

  1. Quantas linhas iniciam com o caractere “-”?
  2. Quantas palavras estão totalmente em caixa alta?
  3. Quantas palavras não possuem as vogais “a” e “e”? (sem acento)
  4. Retire todas as linhas em branco existentes no texto.



Parte 6

Resolva as questões a seguir, todas baseadas no arquivo people.20091103.txt.bz2.

  1. Quantos e-mails diferentes existem no arquivo?
  2. Quantos e-mails diferentes não possuem qualquer algarismo?
  3. Quantos pacotes diferentes existem nas linhas marcadas como “main”?



Parte 7

Neste site há uma relação de pacotes que possuem problemas de hardening no Debian. Neste outro site é possivel obter uma lista de pacotes órfãos. Faça uma relação dos pacotes órfãos que possuem problemas de hardening.

Parte 8

Crie um script que faça o seguinte:

  • Gere um número inteiro aleatório entre 1 e 100 e que dê ao usuário 10 chances para que o mesmo adivinhe tal número.
  • Deverá haver mensagens de erro caso:
    • O usuário não escolha um número, mas sim outro caractere qualquer. Utilize uma função para fazer essa validação.
    • O usuário escolha um número fora do range. Utilize uma função para fazer essa validação.
    • O usuário escolha um número não inteiro. Utilize uma função para fazer essa validação.
  • Sempre imprima na tela: "O número escolhido por você é maior/menor do que o escolhido por mim. Restam x tentativas".
  • No caso de acerto, escreva na tela em amarelo: você acertou.
  • No caso de erro após as 10 tentativas, escreva na tela em vermelho: você errou.



Parte 9

Crie um script que faça o seguinte:

  • Verifique se existe o arquivo /etc/bash.bashrc.
  • Caso não exista, utilize uma função para escrever uma mensagem sobre isso no log /var/log/syslog e termine a execução do script. Também deverá haver uma mensagem (a mesma) para o usuário na sua tela (via função).
  • Caso exista, verifique se há a linha "alias ls='ls --color=auto'".
    • Havendo, escreva no log e na tela do usuário, via função, "nada a fazer, saindo.".
    • Não havendo, escreva no log e na tela do usuário, via função, "adicionado alias para o comando ls".